YD_S 개발로그
article thumbnail

Kakao 로그인이 왜 안되지?

Android에서 Kakao 로그인 기능 구현을 위해 key 값을 네이티브 앱 키 값을 넣어 구현 후 빌드하였다. 

APK 파일을 생성해 실제 기기에 테스트 해봐도 잘 동작하였다. 

 

그런데 Google Play Console에 테스트 버전을 올리고 Play Store에서 테스트 버전을 설치 후 시도하였더니 오류를 내뱉고 로그인이 진행되지 않았다.

kakao developer


원인

- 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

 

앱 서명  |  Android 개발자  |  Android Developers

앱 서명 및 보안과 관련된 중요한 개념을 알아보고, Android 스튜디오를 사용하여 Google Play에 출시하기 위해 앱에 서명하는 방법과 Play 앱 서명을 선택하는 방법을 알아보세요.

developer.android.com


키 해시(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

 

Google Code Archive - Long-term storage for Google Code Project Hosting.

 

code.google.com

 

 

디버그 키 해시(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/

 

Google Play Console | Google Play Console

앱 및 게임이 성장할 수 있도록 사용자에게 도달하고 사용자 참여를 유도하는 데 도움이 될 도구, 프로그램, 통계를 이용하세요.

play.google.com

 

앱 서명 키 확인

2. git bash를 사용하여 키 해시 추출

 - git이 설치되어 있지 않은 경우 git 설치한다.

 

https://git-scm.com/downloads

 

Git - Downloads

Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp

git-scm.com

 

- git bash을 실행하여 Google Play Console에서 복사한 [SHA-1 인증서 지문]을 입력하여 명령어 실행

echo [SHA-1 인증서 지문] | xxd -r -p | openssl base64

 

git bash로 키 해시 추출

 

Kakao Developers에 키 해시 등록

- [Kakao Developers 로그인] > [내 애플리케이션] > [애플리케이션 선택] > [플랫폼] > [Android 수정]

https://developers.kakao.com/

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

 

- 발급 받은 키 해시(디버그 키 해시, 릴리즈 키 해시, Google Play Console 앱 서명 키 해시) 등록

- Play Store에서 받은 애플리케이션으로 로그인 재시도

키 해시 등록 창

 

 

 


 

Reference

https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

 

profile

YD_S 개발로그

@YD_S

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!