expo stand-alone sign-in error
with android studio logcat
플레이스토어를 배포된 버젼에서
LoginScreen을 벗어나지 못하는 에러가 계속 발생하고 있었다.
현재 로그인 스크린을 벗어나는 로직은 아래와 같이 구현을 해두었는데,
어떠한 위치에서 에러가 발생하는지 확인할 필요가 있었다.
expo-google-sign-in 은 expo-client에서 구동이 불가능한 모듈이므로,
디바이스에서 어플리케이션을 실행하며 디버그를 진행해야 했다.
그러나 .apk을 직접 설치할 때는 발생하지 않는 에러였으므로,
실제 플레이스토어를 통해 설치한 다음,
실행 할 때 발생하는 에러 로그를 확인해야 했다.
그러기 위해,
본인의 스마트폰을 데스크톱에 연결,
데스크톱의 안드로이드 스튜디오 logcat과
스마트폰의 usb debugging 허용을 통해 로그를 확인할 수 있었다.
그 결과
GoogleISignIn.singInAsync()
메소드가 현재 계속 실패하고 있음을 확인할 수 있었다.
이후
안드로이드 스튜디오에서 확인한 에러 메세지를 검색해보았다.
‘GoogleSignIn.signInAsync: DEVELOPER_ERROR’
그 결과,
파이어베이스 어플리케이션 인증서지문에
제대로 sha-1 암호가 추가되지 않아 발생하는 에러로 확인을 했다.
기존에 .apk 직접 설치시 문제가 없었던
sha 인증서 지문은
패키지 디렉토리내에서
keytool -keystore path-to-debug-or-production-keystore -list -v
를 통해 얻은 인증서 뿐이었다.
그런데 playstore를 통해 배포를 할 경우 에러를 발생하고 있었다.
필요한 인증서가 더 있었던게 아닐까?
플레이스토어 콘솔에서
등록한 어플리케이션을 대상으로
자체 발급하는 인증서가 존재하던것을 기억했다.
두가지 종류의 암호화된 인증서를 발급하고 있는것을 확인했는데,
업로드 인증서의 경우는
위에서 command를 통해 발급한 암호화 동일했다.
그래서 미등록된 ‘앱서명인증서’를
파이어베이스 어플리케이션 서명에 추가해보았다.
이후 변경된 googleService.json 파일을 받아
프로젝트를 업데이트 해주었다.
파이어베이스에 새 인증서를 등록하니,
구글 apis에 새로운 클라이언트id가 발급이 되었고
해당 클라이언트id도 googleLogin config에 업데이트 해주었다.
문제는 해결되었다.