문제 상황
서비스를 배포하고나서 안드로이드 기기에서 카카오 로그인이 안된다는 버그 리포트를 받았다. 안드로이드 기기에서만 안된다는 것을 제보받고 패키지의 문제인가 생각을 했다. 그런데 그런 이슈가 있다는 걸 듣지도 못했고, 디버그 모드에서 잘 동작하는 것을 확인하고나서 카카오에 등록한게 문제가 생겼다는 것을 인지했다.
원인과 해결
원인
Android 플랫폼 등록을 할 때 키 해시를 등록하는 부분이 있다. 테스트를 할 때에는 디버그 키 해시를 받아서 등록을 해놓는데, 구글 플레이에 앱이 등록되고 나서는 릴리즈 키 해시를 등록해줘야한다. ▼
조금 더 정확히 말하자면, 디버그 앱은 안드로이드 스튜디오에서 자동으로 서명해준 키 스토어로 서명되어있다. 그에 반해 구글 플레이에 등록되는 앱은 개발자가 직접 생성한 키 스토어로 서명된다. 그리고 카카오는 각각의 키 스토어의 해시를 통해 해당 앱이 카카오 서비스에 등록된 앱인지를 확인하고 로그인 기능을 사용 가능하게 해준다. ▼
그런데 서비스 배포가 되었다는 말은 구글 플레이에 등록됐다는 것이고, 이는 즉 릴리즈 앱이라는 것이다. 개발자가 등록한 키 스토어로 서명이 되어있기에 기존에 등록해놓은 디버그 키 해시로는 카카오가 이게 자사 서비스에 등록된 앱인지 파악할 수 없게 된다.
그런 이유로 구글 플레이에서 받은 앱에서 안드로이드에서 카카오 로그인이 안되는 것이었다.
해결
해결 방법은 비교적 간단하다. 여러 가지 방법이 있는데, 가장 쉬운 방법으로 해결했다.
구글 플레이 콘솔에 들어가서 배포한 앱 페이지로 이동하면 SHA-1 인증서 지문을 발급 받을 수 있다. (사진은 추후 첨부)
이를 아래의 명령어로 base64로 인코딩하면 `abcdefg1234=` 와 같은 형태의 키 해시를 얻을 수 있다. ▼
(대강 저런 형태로 나온다는 것이므로 문자와 숫자의 순서와 개수는 다를 수 있다.)
echo "{SHA-1 인증서 지문}" | xxd -r -p | openssl base64
잘 안된다면 여기 블로그를 참고해보는 것이 좋다. 카카오 공식인지는 모르겠지만, 자세하게 설명이 되어있다. ▼
이제 위에 나온 키 해시를 여기에 추가로 입력해주면 된다. 기존에 있던 디버그 키 해시를 지울 필요는 없다. 테스트는 계속 해야하니까 지우지 말고 아래에 추가로 입력해주면 된다. ▼
이렇게 등록을 해주고 다시 설치를 다시 해주면 된다. 디버그 모드로 설치를 했다가 앱을 지우지 않고 다시 릴리즈 모드로 설치를 했다면 키 해시가 바뀌지 않을 수 도 있다. 필자는 제대로 다 등록해놓고 클린 빌드를 하지 않고 릴리즈 모드로 다시 설치했다가 시간을 30분 정도 날렸다... (계속 왜 안될까 하다가 사수님께서 앱을 지우고 다시 해야된다고 하셔서 다시 하니까 바로 해결이 됐다.)
'Develop > Flutter' 카테고리의 다른 글
[Flutter][Widget][Issue] TabBar 왼쪽에 공간이 생기는 현상 (0) | 2024.12.11 |
---|---|
[Flutter][Error] Lexical or Preprocessor Issue (Xcode): 에러 해결 (0) | 2024.10.16 |
[Flutter] Event Bus 패턴 (0) | 2024.09.28 |
[Flutter] Dart는 싱글 스레드 언어 (0) | 2024.08.04 |
[Flutter] Dart의 컴파일 과정 (0) | 2024.08.04 |