파이어베이스 인증에서 지원하는 Google, Facebook 같은 provider의 경우에는
signInWithCredential
로 로그인하면 되고
그 외 카카오톡이나 네이버 같이 파이어베이스 인증에서 지원하지 않는 provider의 경우에는 JWT를 발급받는 과정을 거쳐서 signInwithCustomToken
으로 로그인을 하면 된다.
내 경우에는 깃허브 계정이 signOut되었다가 다시 signIn 해야하는 상황에서 위와 같이 credential로 로그인해야한다는 것을 생각하지 못하고 처음 로그인 시 getIdToken
으로 얻을 수 있는 토큰으로 나중에 signInwithCustomToken
을 수행하면 되겠구나 하고 시도해봤는데
아래와 같이 token format이 올바르지 않다는 에러를 볼 수 있었다.
signInwithCustomToken
의 경우 공급자와의 인증 과정에서 발행한 JWT를 넘겨줘야 하는데 getIdToken
은 그러한 형식의 토큰이 아니어서 발생한 에러인 것 같았다.
그래서 깃허브 계정으로 재로그인을 할 때에는 credential을 받아두었다가 signInWithCredential
로 로그인 하는 방식으로 수정했다.
코드상으로는 이런식으로 분기를 했었다.
"kakao" -> {
// 카카오 등 파이어베이스에서 지원하지 않는 공급자는 customToken으로 로그인
signInResult = _auth.signInWithCustomToken(snsCustomToken.value!!).await()
}
"github.com" -> {
// 깃허브 등 파이어베이스에서 지원하는 공급자는 credential로 로그인
signInResult = _auth.signInWithCredential(snsCredential.value!!).await()
}