내 애플리케이션 추가 및 플랫폼 등록
카카오 API를 사용하기 위해서는 kaka developers 웹사이트에 나의 앱을 등록해야 하고,
등록한 앱에서 API를 호출하려면 사용하려는 플랫폼에 대한 정보 또한 등록해야 한다.


플랫폼 - 패키지명 // 마켓URL // 키 해시 등록

- 패키지명
내 애플리케이션의 패키지명을 적어주면 된다.
build.gradle(app) 의 applicationId를 통해 찾을 수 있다.
ex ) applicationId "com.example.myapplication" - 마켓 URL
만약 내 어플리케이션이 구글 플레이스토어와 같은 앱장터에 릴리즈가 되었다면 해당 마켓의 URL을 기재한다.
그렇지 않다면 공백으로 남겨놓는다. - 키 해시
키 해시란? 개발 단계 및 서비스 릴리즈 단계에 있는 APP이 해당 API를 사용하기 위해 필요한 값이다.
만약 해당 칸에 적절한 키 해시값이 등록되어 있지 않다면 앱에서 API를 호출하지 못한다.
(키 해시를 등록하는 이유는 많은 앱들의 무분별한 API사용을 제한하기 위함이라고 한다.)
키 해시 값은 내 Application을 통해 구할 수 있고, 디버그 키 해시와 릴리즈 키 해시 가 존재한다.
카카오 디벨로퍼에서는 다음과 같은 방법이 있다고 한다.

실제로 나 또한 키 해시를 구하는 과정에서 어려움을 많이 겪었다. 그래서 그 과정을 기록해보고자 한다.
1.터미널을 이용하여 디버그, 릴리즈 키 해시 생성
카카오 디벨로퍼에 소개된 방법을 보면
디버그 키 해시와 릴리즈 키 해시를 구하는 방법이 있다.

내 어플리케이션의 릴리즈 상태에 따라서 필요한 키 해시를 얻어야 할 것이다.
만약 디버그 환경에서만 API를 사용할 것이라면
keytool -exportcert -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
릴리즈 환경에서 API를 사용해야 한다면
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | PATH_TO_OPENSSL_LIBRARY\bin\openssl base64
해당 명령문을 Android studio - Terminal에 치면 된다.

(중요한 점은 openssl 이 없는 경우 다운로드 받아서 환경 변수를 설정해줘야함) -> 여러 블로그 참조
그리고 릴리즈 키 해시를 구하기 위한 명령문에서
<RELEASE_KEY_ALIAS> 와 <RELEASE_KEY_PATH> 부분이 있는데, 이를 그대로 복붙하면 안된다!!
다음과 같이 App을 apk 또는 android app bundle로 빌드할 때 App Release key를 설정한 부분이 있을 것이다.

<RELEASE_KEY_ALIAS> 부분에는 Key alias 를, <RELEASE_KEY_PATH> 부분에는 Key store path를 적어주면 된다.
그럼 이제 키값이 나오는데, 해당 키 해시를 플랫폼에 등록해주면 된다.
2022.09.12 업데이트
위의 명령어를 "git bash 를 통해서 입력을 해서 얻은 키"들이 실제 키와는 달라서
전혀 api가 작동하지 않는 모습을 보여줬다.
이에 sha-1 키를 얻을 수 있는 다른 명령어를 찾아보았다.
Debug Key
keytool -list -v -keystore "C:\Users\aa\.android\debug.keystore" -alias androiddebugkey -storepass android -keypass android
Release Key
keytool -list -v -keystore {KEY_STORE_PATH} -alias {KEY_ALIAS_NAME}
-> release key의 경우 해당 명령어를 입력하고, Key Password를 입력하면 된다.
해당 명령어로 얻는 KEY들을
git bash를 이용해
echo {SHA-1 KEY} | xxd -r -p | openssl base64
를 입력해주면 해당 HASH KEY를 구할 수 있다.
2.Google play console에서 릴리즈 키 해시 구하기
만약 Google play store에 어플리케이션을 release 하기 위해 Google play console에 앱을 등록했다면
앱 무결성/앱 서명 tap에서 다음과 같은 앱 서명 키 인증서를 확인할 수 있다.

여기서 SHA-1 인증서 지문을 카카오 키 해시에 등록해주면 되는데,
해당 키 해시를 그대로 써주는 것이 아니라 Base64로 인코딩을 해준 다음 키 해시로 등록해야한다.
(이 과정을 "1.터미널을 이용하여 디버그, 릴리즈 키 해시 생성" 에서는 openssl -sha1 binary | openssl base64 와 같은 명령어를 통해 수행.)
따라서 터미널을 통해 sha-1 인증서 지문을 바꿔주는 명령어를 사용해야 한다.
echo <SHA-1 인증서 지문> | xxd -r -p | openssl base64
그런데 android studio 터미널이나, Windows (나의 os도 window이다.) 를 사용한다면
해당 명령어가 xxd가 어쩌고 저쩌고 하는 오류와 함께 제대로 수행되지 않는 것을 볼 수 있다.
여기저기 찾아본 결과, 해당 명령어는 리눅스에서 사용가능한 명령어라고 한다.
(window에서는 또 다른 명령어를 사용해야 하는건지.. 어떤 방법이 있는지 찾지 못하였다.)
따라서 본인이 리눅스를 사용하지 않는다면 git bash를 설치하여 해당 터미널에서 명령어를 입력한다면
정상적으로 인증서 지문을 키 해시로 바꾼 결과를 얻을 수 있을 것이다.
위 2가지 방법을 모두 했는데 안되는 경우.
위의 두가지 방법을 모두 사용해서 키 해시를 등록했음에도 불구하고,
카카오 API를 사용하지 못하는 경우가 있다. (내가 그랬다.)
이때는 Kako SDK를 이용한 방식을 사용할 수 있다.
Utility에서 제공하는 편의 기능 중 getKeyHash() 함수를 사용하여 키 해시 값을 문자열(String)로 구할 수 있으며
나의 경우 다음과 같이 Application()을 구현한 클래스를 이용하여 키 해시를 로그로 찍고, 해당 키 해시를
플랫폼에 등록하여 사용하였다.
class GlobalApplication : Application() {
override fun onCreate() {
super.onCreate()
var keyHash = Utility.getKeyHash(this)
Log.i("GlobalApplication", "$keyHash")
}
}
왜 1,2 에서 실행한 방법으로 구한 키 해시가 제대로 구실을 못했는지 아직은 잘모르겠지만..