When?
- 현재 supabase 를 이용해 auth 를 진행하려하는 중으로, 기존 firebase 구글 로그인을 걷어내는 중에 생긴 오류
@react-native-google-signin/google-signin 라이브러리를 사용하고 있음.
- iOS 에서는 문제가 없었으나, AOS 에서 위와 같은 오류로 인해 로그인 처리가 불가능 한 상태가 발생했다.
- 기존 AOS 의 디버그 키스토어를 Firebase에 등록한 상태였는데, Firebase 를 걷어내며 Google Cloud Oauth 로 변경하면서 동일한 fingerPrint 를 사용할 수 없다는 오류가 발생
Requested entity already exists
- 기존 debug.keystore 를 삭제하고 다시 생성한 뒤에 해당 SHA-1 값을 등록
- 등록은 정상적으로 되었으나,
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();
if (!idToken) {
throw new Error('id Token is null');
}
...
resolve(user);
} catch (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 수정 -> 재등록
- 환경 변수 컨트롤의 중요성에 대해 다시 한번 깨닫는다...
- 잘안되면 일단 밀고 다시 빌드해보라는 선조의 지혜를 배워갑니다...