Kakao 로그인이 왜 안되지?
Android에서 Kakao 로그인 기능 구현을 위해 key 값을 네이티브 앱 키 값을 넣어 구현 후 빌드하였다.
APK 파일을 생성해 실제 기기에 테스트 해봐도 잘 동작하였다.
그런데 Google Play Console에 테스트 버전을 올리고 Play Store에서 테스트 버전을 설치 후 시도하였더니 오류를 내뱉고 로그인이 진행되지 않았다.
원인
- Google Play 앱 서명(App Signing)을 사용하기에 KaKao 릴리즈 키를 사용하지 않고, Google Play Console에서 얻은 SHA-1 인증서 지문(SHA-1 certificate fingerprint)을 base64로 인코딩하여 사용해야한다.
https://developer.android.com/studio/publish/app-signing?hl=ko#app-signing-google-play
키 해시(Key Hash) 등록
키 해시(Key Hash)란?
- 인증서(Certificate)의 인증서 지문 값(Certificate fingerprints)을 해시(hash)한 값으로, 악성 앱인지 판별하는데 사용한다.
- 키 해시는 디버그 키 해시(Debug key hash)와 릴리즈 키 해시(Release key hash) 두 가지가 있다.
- 디버그 키 해시 - 프로젝트를 처음 생성하거나 디버그할 때, 안드로이드 스튜디오에서 개발 환경에 맞게 자동으로 생성되는 디버그 인증서에서 해시(hash)한 값
- 릴리즈 키 해시 - 앱 스토어에 앱을 배포하기 위해 성상한 릴리즈 인증서로부터 해시한 값
※ 같은 프로젝트를 여러 개발자가 작업할 경우 개발자 각각의 디버그 키 해시를 생성 후 등록해야한다.
터미널에서 디버그, 릴리즈 키 해시 생성
- 터미널에서 키 해시를 생성하려면 키 해시를 관리하는 키툴(keytool)이 필요하다.
1. 운영체제에 맞는 키툴(keytool)을 설치한다.
Mac
- Homebrew를 통해서 설치
brew install openssl
Windows
- 설치 후 환경변수 지정하여 사용하는게 편하다.
(환경 변수 지정하는 방법은 작성하지 않겠다.)
https://code.google.com/archive/p/openssl-for-windows/downloads
디버그 키 해시(Debug key hash)
- Mac의 경우 터미널 windows의 경우 cmd 창에서 운영체제에 맞는 명령어를 입력
//Mac
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
//Windows
keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
- 명령어 입력 후 디버그 키 해시 값 추출
릴리즈 키 해시(Release key hash)
- key store가 존재해야한다. (없을 경우 keystore부터 생성)
- key store의 alias 명칭, 비밀번호, 경로를 알아야한다.
// Mac
keytool -exportcert -alias [key alias] -keystore [key store 경로] | openssl sha1 -binary | openssl base64
// Windows
keytool -exportcert -alias [key alias] -keystore [key store 경로] | openssl sha1 -binary | [openssl 경로]\bin\openssl base64
- 명렁어 입력 후 릴리즈 키 해시 값 추출
Kakao SDK로 디버그, 릴리즈 키 해시 확인
- 터미널로 키 해시 값 추출했을 경우 생략한다. (터미널 혹은 해당 방식 중 택 1 하여 키 해시 값 추출)
- Kakao SDK에서 제공하는 getKeyHash() 함수를 사용하여 키 해시 값을 문자열(String)로 구할 수 있다.
import com.kakao.sdk.common.util.Utility
var keyHash = Utility.getKeyHash(this)
// keyHash 로그 출력 (debug, release 키 해시 값)
Google Play Console 앱 서명으로 릴리즈 키 해시 확인
1. [Google Play Console 로그인] > [설정] > [앱 서명 키 인증서] > [SHA-1 인증서 지문] 복사
https://play.google.com/console/about/
2. git bash를 사용하여 키 해시 추출
- git이 설치되어 있지 않은 경우 git 설치한다.
- git bash을 실행하여 Google Play Console에서 복사한 [SHA-1 인증서 지문]을 입력하여 명령어 실행
echo [SHA-1 인증서 지문] | xxd -r -p | openssl base64
Kakao Developers에 키 해시 등록
- [Kakao Developers 로그인] > [내 애플리케이션] > [애플리케이션 선택] > [플랫폼] > [Android 수정]
- 발급 받은 키 해시(디버그 키 해시, 릴리즈 키 해시, Google Play Console 앱 서명 키 해시) 등록
- Play Store에서 받은 애플리케이션으로 로그인 재시도
Reference
https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android
'Android' 카테고리의 다른 글
build.gradle에서 현재 flavor 찾기 (0) | 2024.04.09 |
---|---|
Android - FileProvider (0) | 2023.09.12 |
Android - Multidex 오류 해결법 (0) | 2023.04.26 |
Android - Keystore 생성 및 앱 서명하기 (0) | 2023.04.19 |
Android - API Key 숨기기 (local.properties 활용) (0) | 2023.04.14 |