문제 : ‘kakao-open-android-sdk-sample’ app 에서 로그인시, 다시 로그인 화면으로 돌아옵니다.
먼저 올라온 질문중에 유사한 증상 : 키해시값 이안나옵니다 - anon94352813 님의 게시물 #11 여기서 후반부 문제
Andoroid Studio Logcat :
com.kakao.sdk.sample E/kakao.sdk: com.kakao.util.exception.KakaoException: AUTHORIZATION_FAILED : invalid android_key_hash or ios_bundle_id or web_site_url
빌드 방식 :
android studio에 sdk import
build
키 해시 생성 모습 :
C:\Users\issea_000>keytool -exportcert -alias androiddebugkey -keystore C:\Users\issea_000.android\debug.keystore -storepass android -keypass android
0710 UUS10U
450202055939Z0710 UUS10U
? 0?놑0?"0
?%?뒹e씉튈6[~띠濁?祉???쎾2돘E머㉢4G퀑bW쩰??み?m좍???nj괍メ5?-K|앒濯J?展U?膜?v
? 7???퉡?햦뜐?s犁퓆빁 ?&똔?t?s춷?X犬wy웺N큾)뵐 ?P펎elG荀;!픡@g2^O~ ?"XD삪斯?lⓟ2풾~_ uU?l瀘a?찢??G?sx ?00U?븺눽?jpD縮?{哲L?
?쯞 ?떆哀%\췹d?L砧*ZL謁?慙훝?y忘G?qi??R넁`?J솅?i9:U`椰뎉y핗l0???eac?머Hg묬??엪?젉??쒏aPvsA?4?
`?빠?
e?W?=央舜"쁒訊tLy%q鄂솘?NE%卄?
C:\Users\issea_000>keytool -exportcert -alias androiddebugkey -keystore C:\Users\issea_000.android\debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64
aHT67cvsSwL3oFDvSDLDk92T3Ec=
위 값을 ‘샘플앱 설정 → Android 키 해시’ 등록하였습니다.
읽어주셔서 감사합니다.
MJ_
3월 21, 2016, 9:44오전
2
@issea1015
말씀하신 토픽에 설명되어 있듯이,
샘플을 빌드하실때 사용한 키스토어의 해시키를 등록했는지 확인해야합니다.
샘플소스를 전혀 수정없이 빌드한다.
1번 빌드시 사용한 키스토어로 키해시를 만들어 등록한다.
키해시를 등록한 개발자 계정으로 로그인을 시도한다.
말씀하신 키해시로 에러가 떨어진게 보이지 않는데
혹시 3번이 잘못된건 아닐까요?
키해시를 등록한 개발자 계정으로 로그인을 하신게 맞나요?
네 키해시를 등록한 계정으로, 샘플앱에 로그인 시도했습니다.
이 문제에 관련있는지 의심되는 사항을 적어보겠습니다.
키해시값이 항상 '='으로 끝나는 거 같은데, =도 키해시에 포함되는 건가요?
예를들어, cxFq+9WahyFhQ+wdVCD3n/RoiyU=
키해시 생성시 ‘-keystore’ 에 대한 인자로 'C:\Users\issea_000.android\debug.keystore’를 사용했는데, 혹시 앱마다 keystore가 따로 존재하나요? 저는 하나의 컴퓨터에 하나의 keystore만 존재한다고 생각했습니다. 그리고 카카오 샘플앱 빌드후에 바로 keytool 명령을 통해 키 해시를 생성했습니다. (그 후 바로 카카오계정 여기 등록했습니다.)
샘플소스 빌드 후, 에러가 하나 뜨는데 무시하고 스마트폰에 run시켰습니다.
Error:Module ‘util’ has variant ‘release’ selected, but the module ‘‘network’’ depends on variant ‘debug’
샘플앱 실행에서 로그인시까지 logcat 내용 (검색어 : kakao)
03-22 00:09:51.397 26185-26185/? W/kakao.sdk: SharedPreferences.getString
03-22 00:09:51.397 26185-26185/? W/kakao.sdk: SharedPreferences.getString
03-22 00:09:51.397 26185-26185/? W/kakao.sdk: SharedPreferences.getLong
03-22 00:09:51.397 26185-26185/? W/kakao.sdk: SharedPreferences.getLong
03-22 00:09:52.217 26185-26185/com.kakao.sdk.sample I/ActivityManager: Timeline: Activity_launch_request id:com.kakao.sdk.sample time:3334566
03-22 00:09:52.267 26185-26185/com.kakao.sdk.sample E/ViewRootImpl: mIsPenSupport: :true
03-22 00:09:52.517 26185-26185/com.kakao.sdk.sample I/ActivityManager: Timeline: Activity_idle id: android.os.BinderProxy@4275ac00 time:3334865
03-22 00:10:52.567 26185-26185/com.kakao.sdk.sample D/kakao.sdk: [GlobalApplication.java:getCurrentActivity():43] ++ currentActivity : SampleLoginActivity
03-22 00:11:51.717 26185-26185/com.kakao.sdk.sample I/ActivityManager: Timeline: Activity_idle id: android.os.BinderProxy@4275ac00 time:3454067
03-22 00:11:52.287 26185-26185/com.kakao.sdk.sample I/ViewRootImpl: ViewRoot’s Touch Event : ACTION_DOWN
03-22 00:11:52.407 26185-26185/com.kakao.sdk.sample I/ViewRootImpl: ViewRoot’s Touch Event : ACTION_UP
03-22 00:11:52.507 26185-26185/com.kakao.sdk.sample E/ViewRootImpl: mIsPenSupport: :true
03-22 00:11:53.367 26185-26185/com.kakao.sdk.sample I/ViewRootImpl: ViewRoot’s Touch Event : ACTION_DOWN
03-22 00:11:53.457 26185-26185/com.kakao.sdk.sample I/ViewRootImpl: ViewRoot’s Touch Event : ACTION_UP
03-22 00:11:53.537 26185-26185/com.kakao.sdk.sample D/kakao.sdk: [GlobalApplication.java:getCurrentActivity():43] ++ currentActivity : SampleLoginActivity
03-22 00:12:02.717 26185-26185/com.kakao.sdk.sample I/ActivityManager: Timeline: Activity_idle id: android.os.BinderProxy@4275ac00 time:3465062
03-22 00:12:02.867 26185-28579/com.kakao.sdk.sample D/dalvikvm: GC_FOR_ALLOC freed 470K, 5% free 16718K/17468K, paused 23ms, total 26ms
03-22 00:12:03.167 26185-26185/com.kakao.sdk.sample E/kakao.sdk: com.kakao.util.exception.KakaoException: AUTHORIZATION_FAILED : invalid android_key_hash or ios_bundle_id or web_site_url
at com.kakao.auth.Session.onAccessTokenCompleted(Session.java:404)
at com.kakao.auth.Session$1.call(Session.java:577)
at com.kakao.auth.Session$1.call(Session.java:546)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
[Solution]
제가 적어논 키해시로 에러가 떨어진게 보이지 않는다는 말씀을 듣고 해답을 찾았습니다. 감사합니다.
문제가 발생한 원인
'Users\issea_000.android\debug.keystore’로 생성한 key-hash와 빌드한 샘플앱에 등록된 key-hash가 일치하지 않았습니다.
해결 방법
샘플앱에 등록된 key-hash를 알아내서, '개발자 페이지-샘플앱 설정’에 올린다.
샘플앱에 실제 등록된 key-hash 알아내기
'샘플앱-SplashActivity’에 멤버함수 추가
public static String printKeyHash(Activity context) {
PackageInfo packageInfo;
String key = null;
try {
//getting application package name, as defined in manifest
String packageName = context.getApplicationContext().getPackageName();
//Retriving package info
packageInfo = context.getPackageManager().getPackageInfo(packageName,
PackageManager.GET_SIGNATURES);
Log.e("Package Name=", context.getApplicationContext().getPackageName());
for (Signature signature : packageInfo.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
key = new String(Base64.encode(md.digest(), 0));
// String key = new String(Base64.encodeBytes(md.digest()));
Log.e("Key Hash=", key);
}
} catch (PackageManager.NameNotFoundException e1) {
Log.e("Name not found", e1.toString());
}
catch (NoSuchAlgorithmException e) {
Log.e("No such an algorithm", e.toString());
} catch (Exception e) {
Log.e("Exception", e.toString());
}
return key;
}
추가한 함수 onCreate에서 실행
printKeyHash(this);
스마트폰에 run 시키기고, logcat 확인
E/Key Hash=: mRKpmCCwGeAGKlkV4W3yk+caRuM=
1개의 좋아요