Release keyhash — Google app signing

elice dev
3 min readMar 18, 2018

--

개발중인 앱에 kakaoLink API를 연동해서 ‘공유하기' 기능을 추가했습니다. 그리고 google app store에 출시를 했는데, 개발자 계정 이메일에 삼성전자로부터 메일이 와있었습니다. 확인해보니 카카오톡 공유하기 클릭 시에, 아래와 같이 토스트 메시지가 나오는것을 캡쳐해서 보내주셨습니다.

android keyhash mismatched!
check out registered keyhash.

카카오 API 가이드로 다시 가보니, 릴리즈 키해시 등록하는 방법이 있었고, terminal로 아래와같이 keyhash를 추출해서 등록했으나 문제는 그대로였습니다.

keytool -exportcert -alias <release_key_alias> -keystore <release_keystore_path> | openssl sha1 -binary | openssl base64

그런데, 가이드에서 아래와 같은 문구를 발견했습니다.

만약 구글 플레이 개발자 콘솔에서 Google play app signing 기능을 활성화시키셨다면 구글 플레이에 앱이 릴리즈되기 전에 개발자의 로컬 개발 환경에서 릴리즈 키스토어의 시그너쳐가 삭제되고 구글 서버에 저장되어 있는 사이닝키의 시그너쳐로 교체됩니다. 그렇기 때문에 이 사이닝키로 생성한 키해시 또한 등록해줘야 합니다.

앱을 출시할 때, 제가 직접 구글 앱 signing을 사용하도록 동의했던 것을 알게 되었습니다. 구글 앱 서명이란, 업로드 키를 사용하여 앱에 서명합니다. 그런 다음 Google에서 업로드 키 서명을 인증한 후 삭제합니다. 마지막으로 Google에서 내가 제공한 원래 앱 서명 키를 사용하여 앱에 다시 서명하고 사용자에게 앱을 제공합니다.

그렇기 때문에 로컬 릴리즈 키해시 값 말고도 구글 앱 서명 인증서로부터 keyhash를 추출해서 등록해야합니다. 추출 방법을 소개해드립니다.

google play console > 해당 앱 선택 > 메뉴에서 출시관리 > 앱서명 

으로 들어가면 SHA-1 hash 값이 있습니다. 터미널로 해당 값으로 추출하는 방법 알려드리겠습니다. ( 참고URL )

SHA-1 이33:4E:48:84:19:50:3A:1F:63:A6:0F:F6:A1:C2:31:E5:01:38:55:2E 라고 예를 들면,

echo 33:4E:48:84:19:50:3A:1F:63:A6:0F:F6:A1:C2:31:E5:01:38:55:2E | xxd -r -p | openssl base64

output이 나오게 됩니다. 앱 출시할때, 구글 앱 서명을 사용한 것을 동의 하셨다면, 페이스북이나 카카오 등 외부 라이브러리 사용시에 위와같이 릴리즈 키해시값을 확인하셔서 등록하시면 되겠습니다. :)

--

--