PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)
Flutter를 이용해 Android에서 Google 소셜 로그인 기능을 구현할 때 이 에러가 발생하게 되는데, 이미 이 에러를 띄웠을 때는 소셜 로그인을 이용하여 구글 로그인을 위한 API 요청은 실행이 되었을 것으로 생각된다. 아마도 대부분은 아이디와 비밀번호를 정상적으로 입력한 후 로그인을 위한 요청을 보냈을 때 이 에러를 반환한다. 일반적으로 인증서와 관련된 문제가 발생했을 때 아래 에러가 발생한다.
해당 에러가 발생하기 전에 놓친 부분들은 여러가지가 있겠지만 직접 경험해본 케이스는 아래와 같다.
- Firebase에 디버그 또는 릴리즈 키 관련 정보가 누락된 경우
=> 결과적으로 google-services.json에 해당 해시키 정보가 없는 상태 - A 컴퓨터에 전체 프로젝트를 그대로 복사하여 B 컴퓨터에서 다시 실행하는 경우
=> 프로젝트를 복붙하며 A 컴퓨터에 있던 키가 갱신이 제대로 되지 않았거나 적용되어있지 않은 상태
가장 빈번한 경우는 1번이다. 처음 디버그 키, 해시 키 등의 용어를 들으면 어려워 보일 수 있지만 그냥 명령어 한두 줄로 해결되는 문제이니 두려워할 필요는 없다.
Firebase에 디버그 또는 릴리즈 키 관련 정보가 누락
1. 키 확인
이 때는 키를 재발급받거나 받아뒀던 키의 SHA1 값을 다시 Firebase의 디지털 지문에 추가해주면 된다. 아래 명령을 통해 키 값을 확인할 수 있다.
DEBUG KEY 확인
keytool -list -v -keystore [KEYSTORE_PATH] -alias androiddebugkey -storepass android -keypass android
RELEASE KEY 확인
keytool -list -v -keystore [KEYSTORE_PATH] -alias androidreleasekey -storepass android -keypass android
앱 서명 KEY 확인
keytool -list -v -keystore [KEY_PATH]
2. 키 추가
이제 이 SHA1 값을 Firebase에 추가해주면 된다.
우선 자신의 프로젝트에 들어간 후 프로젝트 설정 화면으로 간다.
이후 위에서 확인한 SHA1 키들을 모두 디지털 지문 추가를 눌러 작성하고 저장해준다.
3. google-services.json 추가
google-services.json 파일 버튼을 눌러 다운로드 한다.
다운로드한 google-services.json 파일을 앱 수준 gradle이 있는 경로에 넣어준다.
A 컴퓨터에 전체 프로젝트를 그대로 복사하여 B 컴퓨터에서 다시 실행하는 경우
깃을 사용했을 수도 있고 그냥 프로젝트를 전체 복사해올 수도 있다. 내 경우는 윈도우에서 작업하다 맥으로 옮겨오다 이런 문제가 발생했다. 윈도우에서 윈도우로 옮길 때도 마찬가지로 이 문제가 발생할 가능성이 높다.
하지만 혹시 모르니 일단 flutter clean을 수행해보고 그다음 자바 버전이 11 이상인지 체크를 먼저 한 후 다음을 진행하기 바란다.
우선 아래 경로로 이동하여 gradlew 파일을 찾는다.
./gradlew signingReport
or
gradlew signingReport
gradlew Unix 실행 파일을 찾았다면 위 두 명령 중 동작하는 명령을 실행한다.
패키지 수만큼 프린트 찍히긴 하는데 어쨌든 실행 후 별다른 오류 없이 잘 수행되면 위 그림처럼 SHA1 키를 확인할 수 있다. 이 SHA1 값을 Firebase의 디지털 지문을 추가해주고 다시 google-services.json을 다운로드하여 기존 파일 위에 덮어쓰면 해결된다.
관련 포스트
참고 자료