[ERR] a non-recoverable sign in failure occurred

최경락 (K_ROCK_)·2024년 7월 30일

When?

  • 현재 supabase 를 이용해 auth 를 진행하려하는 중으로, 기존 firebase 구글 로그인을 걷어내는 중에 생긴 오류
  • @react-native-google-signin/google-signin 라이브러리를 사용하고 있음.
  • iOS 에서는 문제가 없었으나, AOS 에서 위와 같은 오류로 인해 로그인 처리가 불가능 한 상태가 발생했다.

  1. 기존 AOS 의 디버그 키스토어를 Firebase에 등록한 상태였는데, Firebase 를 걷어내며 Google Cloud Oauth 로 변경하면서 동일한 fingerPrint 를 사용할 수 없다는 오류가 발생 Requested entity already exists
  2. 기존 debug.keystore 를 삭제하고 다시 생성한 뒤에 해당 SHA-1 값을 등록
  3. 등록은 정상적으로 되었으나, a non-recoverable sign in failure occurred 에러가 발생
const handleGoogleLogin = () =>
    new Promise<UserDataType>(async (resolve, reject) => {
        try {
            await GoogleSignin.hasPlayServices();
            GoogleSignin.configure({
                webClientId: APP_ENV_GOOGLE_WEB_CLIENT_ID,
                iosClientId: APP_ENV_GOOGLE_IOS_CLIENT_ID,
            });

            const { idToken } = await GoogleSignin.signIn(); // <- here
            if (!idToken) {
                throw new Error('id Token is null');
            }

            ...

            resolve(user);
        } catch (error) {
            // console.log('google login error : ', error);
            reject(error);
        }
    });

Solve

cd ./android && ./gradlew clean    
  • 이후 기존 앱 삭제 뒤 재빌드 실행.

Why

  • 기존에 빌드된 앱의 설정에는 기존 debug.keystore 를 기준으로 빌드되었다.
  • 즉, 내가 새로 등록한 SHA-1 의 값과 기존앱의 keystore 의 SHA-1 값이 동일하지 않은 것
  • 그렇기 때문에 안드로이드 클린빌드를 실행해주어야 했음.

+

  • 이외에 회신 가능한 이메일 필드를 추가하라는 이야기도 있었지만, 나의 경우에는 이미 모든 필드를 채워둔 상태여서 해당하지 않았음.
  • Google Cloud OAuth 의 Requested entity already exists 해결 방법
    - 기존 키스토어 삭제 -> 키스토어 생성 -> app/build.gradle 수정 -> 재등록

  • 환경 변수 컨트롤의 중요성에 대해 다시 한번 깨닫는다...
  • 잘안되면 일단 밀고 다시 빌드해보라는 선조의 지혜를 배워갑니다...

0개의 댓글