파이어베이스 인증에서 SNS 계정 로그인을 할 때 주의사항

MSU·2024년 6월 4일
0

에러케이스

목록 보기
8/12

파이어베이스 인증에서 지원하는 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()
            }
profile
안드로이드공부

0개의 댓글