바르고 뜨겁게
[안드로이드] 키해시 얻는 방법 (debug keyhash, release keyhash, googlePlay keyhash) 본문
[안드로이드] 키해시 얻는 방법 (debug keyhash, release keyhash, googlePlay keyhash)
RightHot 2019. 1. 28. 18:52안드로이드에서 카카오톡 로그인이라던가 페이스북로그인 등 API를 사용하기 위해선
키해시를 해당 사이트에 넣어줘야 한다.
키해시 얻는 방법 (debug keyhash, release keyhash, googlePlay keyhash)
디버그 키해시
public String getKeyHash(final Context context) {
PackageInfo packageInfo = Utility.getPackageInfo(context, PackageManager.GET_SIGNATURES);
if (packageInfo == null)
return null;
for (Signature signature : packageInfo.signatures) {
try {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
return Base64.encodeToString(md.digest(), Base64.NO_WRAP);
} catch (NoSuchAlgorithmException e) {
Log.w(TAG, "디버그 keyHash" + signature, e);
}
}
return null;
}
keytool -exportcert -alias androiddebugkey -keystore <debug_keystore_path> -storepass android -keypass android | openssl sha1 -binary | openssl base64
keytool -exportcert -alias key0 -keystore <키스토어 경로>\KeyStore.jks | openssl sha1 -binary | openssl base64
만약 환경변수에 keytool이 추가되지 않았다면 jre가 깔린 폴더로 이동해서 사용하자.
ex)
cd C:\Program Files\Java\jdk1.8.0_171\bin
com.kakao.util.exception.KakaoException: AUTHORIZATION_FAILED : invalid android_key_hash or ios_bundle_id or web_site_url
와 같은 에러를 발생시킨다. 분명 잘되던 놈이 말이다.
분명 릴리즈키해시까지 잘 등록했는데 왜 그럴까?
개발자가 APK 배포 시 앱 서명을 하던 기존 방식과 달리 구글 플레이 앱 서명은 업로드 키로 서명된 APK를 구글 플레이에 업로드하면 구글이 업로드 인증서를 확인 후 앱 서명 키로 재서명을 합니다. 업로드 서명은 이름 그대로 업로드 시 검증을 위해서만 사용되며 앱 서명 키로 서명되기 전 삭제됩니다. 이제 개발자는 로컬에 앱 서명 키가 아닌 업로드 키를 보관하면 되고, 앱 서명 키는 구글의 인프라를 통해 관리되므로 앱 서명 키를 분실하는 문제로부터 자유로워질 수 있습니다. 다만 마음의 준비가 필요한 부분이라면 개발자가 배포용으로 빌드 한 APK와 구글 플레이에 배포한 APK의 서명이 다름으로 발생하는 일련의 현상들입니다. (https://medium.com/@jungil.han)
라고 한다.
그렇기 때문에 구글 플레이 콘솔에 접속한다음 아래와 같은 화면에서 인증서 지문을 들고와야 된다.
그런데 문제는 저 인증서지문을 그대로 올리면 또 안된다. base64(?) 형태로 변환을 시켜줘야하는데
윈도우에서는 아무리 찾아봐도 방법이 나오지 않는다.
그래서 결국 크롬에 있는 리눅스 가상머신 TermLinux 앱을 사용해서 아래와 같이 입력 후 해결했다.
echo <구글플레이 SHA-1 인증서지문 입력> | xxd -r -p | openssl base64
'안드로이드' 카테고리의 다른 글
[안드로이드] 레트로핏2 를 사용해 서버 통신하기 (0) | 2019.04.12 |
---|---|
[안드로이드] 글라이드(Glide) 아웃오브메모리 방지, 메모리 최적화 (0) | 2019.04.05 |
[안드로이드] AsyncTask 분리하기 , 서버통신 분리하기 (0) | 2019.03.28 |
안드로이드 스튜디오 자체 오류/에러 해결방법 (0) | 2019.03.27 |
[안드로이드] 리사이클러뷰(RecyclerView) 높이(Height) 동적 변경 (0) | 2019.02.08 |