HOME Android Java C/C++ Linux php 기타

[Android] 카카오 API 해시키(hash key) 오류 해결하기

작성시간 : 2016-04-13 15:05:23

카카오 API 해시키(hash key) 오류 해결하기

https://developers.kakao.com에 계정을 생성하고 카카오 API를 연동하던 중 해시키가 올바르지 않다는 오류가 발생했다.

com.kakao.util.exception.KakaoException: AUTHORIZATION_FAILED : 
invalid android_key_hash or ios_bundle_id or web_site_url

원인은 카카오 API를 사용하기 위해서는 아래와 같이 키해시를 등록하게 되어있는데 설정된 해시키가 APK의 해시키와 같지 않아서 발생되는 오류다.

카카오 api 어플리케이션 해시키 등록

개발 가이드를 참고해서 openssl을 설치하고 keytool을 해시키를 추출했지만 같은 오류가 발생했다.

원인을 찾아봤더니 openssl 버전에 따라 해시키값이 다르게 생성되는 문제인 것 같다.

문제의 해결은 keytool을 이용하지 않고 Android SDK의 PackageManager를 이용해서 직접 해시키를 추출해니 오류가 발생하지 않았다.

PackageManager를 이용한 해시키 추출 아래 코드를 참고하면 된다.

// Add code to print out the key hash
try {
	PackageInfo info = getPackageManager().getPackageInfo(
			getPackageName(), PackageManager.GET_SIGNATURES);
	for (Signature signature : info.signatures) {
		MessageDigest md = MessageDigest.getInstance("SHA");
		md.update(signature.toByteArray());
		Log.e("MY KEY HASH:",
				Base64.encodeToString(md.digest(), Base64.DEFAULT));
	}
} catch (NameNotFoundException e) {

} catch (NoSuchAlgorithmException e) {

}

코드 출처는 stackoverflow.com이다.

http://stackoverflow.com/questions/17423870/is-there-any-way-to-get-key-hash-from-signed-apk