dev/android

카카오 SDK android key hash 이슈

재삐신생 2018. 4. 12. 21:38
반응형

안드로이드에서 카카오 SDK 적용시


카카오 개발자 사이트에 안드로이드 키해시를 등록해야 한다.


그리고 키해시 구하는 방법은 개발가이드에 잘 설명되어 있다.

https://developers.kakao.com/docs/android#%ED%82%A4%ED%95%B4%EC%8B%9C-%EB%93%B1%EB%A1%9D


그런데 이번에 SDK동작 이상으로 디버깅 하다보니


위 가이드에서 설명한 커맨드라인 방법과, 자바코드 방법의 결과가 다르다!


[참고]

커맨드라인으로 구하기

keytool -exportcert -alias androiddebugkey -keystore <debug_keystore_path> -storepass android -keypass android | openssl sha1 -binary | openssl base64

자바코드로 구하기

public static String getKeyHash(final Context context) {
    PackageInfo packageInfo = 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, "Unable to get MessageDigest. signature=" + signature, e);
        }
    }
    return null;
}


카카오 SDK는 자바로 키해시를 구하게 되므로, 자바로 구한값을 입력해야 정상동작 하였다.


{{USERHOME}}/.android/debug.store 를 지우고 재생성된걸로 해보니, 값이 같다.


커맨드라인에서 사용하는 openssl 버전이 영향을 준다.


참고로 필자는 0.9.8k에서 위 이슈가 발생하였고, 1.0.2o에서는 발생하지 않았다.


openssl 버전에 관해서는 별다른 코멘트는 없으나, 1.0.0 이상 버전을 사용하는 것이 좋겠다.


반응형

'dev > android' 카테고리의 다른 글

[Android M] Apache HTTP Client Removal  (0) 2017.01.23
[android] dump internal sdcard  (0) 2016.05.14
Google Map API V1 to V2 migration  (0) 2016.02.13
[Android ICS] init.d enabled  (0) 2013.02.12
안드로이드 롬업 후 SMS MMS 문제  (0) 2013.02.05