私のアプリはユーザーのログインにfacebook apiを使用しています。開発時には問題なく動作しますが、Google Playにアップロードすると動作しなくなります。
これはエラーログです。
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): Exception during service
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): com.facebook.http.protocol.ApiException: Key hash XXXXXXX does not match any stored key hashes.
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseChecker.b(ApiResponseChecker.Java:83)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseChecker.a(ApiResponseChecker.Java:162)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponse.g(ApiResponse.Java:239)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.Java:272)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.protocol.AuthorizeAppMethod.a(AuthorizeAppMethod.Java:29)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseHandler.a(ApiResponseHandler.Java:56)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.ApiResponseHandler.handleResponse(ApiResponseHandler.Java:29)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.Java:280)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.Java:141)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.b(FbHttpRequestProcessor.Java:103)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.common.FbHttpRequestProcessor.a(FbHttpRequestProcessor.Java:196)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.Java:374)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.SingleMethodRunnerImpl.a(SingleMethodRunnerImpl.Java:151)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.http.protocol.AbstractSingleMethodRunner.a(AbstractSingleMethodRunner.Java:18)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.handler.PlatformOperationHandler.c(PlatformOperationHandler.Java:367)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.katana.server.handler.PlatformOperationHandler.a(PlatformOperationHandler.Java:260)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.fbservice.service.BlueServiceQueue.e(BlueServiceQueue.Java:299)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.fbservice.service.BlueServiceQueue.d(BlueServiceQueue.Java:53)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.fbservice.service.BlueServiceQueue$3.run(BlueServiceQueue.Java:230)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:422)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at Java.util.concurrent.FutureTask.run(FutureTask.Java:237)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at com.facebook.common.executors.ListenableScheduledFutureImpl.run(ListenableScheduledFutureImpl.Java:59)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at Android.os.Handler.handleCallback(Handler.Java:733)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at Android.os.Handler.dispatchMessage(Handler.Java:95)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at Android.os.Looper.loop(Looper.Java:137)
12-10 20:20:02.488: W/fb4a(:<default>):BlueServiceQueue(17284): at Android.os.HandlerThread.run(HandlerThread.Java:61)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): Failed to send
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): com.facebook.fbservice.service.ServiceException: API_ERROR: API_ERROR
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.Java:640)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.facebook.fbservice.ops.BlueServiceOperation.c(BlueServiceOperation.Java:48)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.facebook.fbservice.ops.BlueServiceOperation$2.run(BlueServiceOperation.Java:605)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at Android.os.Handler.handleCallback(Handler.Java:733)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at Android.os.Handler.dispatchMessage(Handler.Java:95)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at Android.os.Looper.loop(Looper.Java:137)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at Android.app.ActivityThread.main(ActivityThread.Java:4998)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at Java.lang.reflect.Method.invokeNative(Native Method)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at Java.lang.reflect.Method.invoke(Method.Java:515)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:777)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:593)
12-10 20:20:02.498: W/fb4a(:<default>):GDPDialog(17284): at dalvik.system.NativeStart.main(Native Method)
キーハッシュが何らかの方法で変更された可能性がありますか?
Facebookがログインアプリケーションの作成に提供する手順を実行しましたか?
リリースキーストアの開始時に取得した「Production keyhash」が必要です。
コマンドラインから:
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
そして、Facebookアプリのページオプションにこのキーを追加します。
詳細: Facebook docs
これがなぜ機能しなかったのかを理解しようとして丸一日過ごしました...
本番用のハッシュキーを生成する場合、Windowsでopenssl-0.9.8e_X64.Zipを使用する必要がありますが、openssl-0.9.8k_X64.Zip
バージョンは異なるハッシュキーを生成します。何らかの理由で9.8kが正しく動作しません... 9.8eが動作します
参照 (
これは私にとって間違ったキーを与えていました。
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
私のために働いた回避策は次のとおりです。
private void printKeyHash(){
// Add code to print out the key hash
try {
PackageInfo info = getPackageManager().getPackageInfo(
"YOUR_PACKAGE_NAME",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
Log.d("KeyHash:", e.toString());
} catch (NoSuchAlgorithmException e) {
Log.d("KeyHash:", e.toString());
}
}
これが誰かを助けることを願っています。
ApiExceptionのスタックトレースから欠落しているハッシュを取得することもできます:Key hash XXXXXXX does not match any stored key hashes
。すでにありますが、=
最後に。 XXXXXXX =を使用します。
これは私にはうまく機能しています
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
どこ
<RELEASE_KEY_ALIAS>
は、署名済みアプリケーションを作成する際のエイリアス名です。
そして
<RELEASE_KEY_PATH>
is下の写真の場所そして、パスワードを入力してくださいkey create password下の写真のAndroidの代わりに
上記の解決策はある程度正しいです。しかし、誰かがまだ問題に直面している場合。開発者プロファイルからキーを削除し、最後にもう一度writing =を追加してEnterを押します。設定と開発者の両方にキーを追加する必要があります。
Google Playへのアプリのリリースとリリースキーの使用に関する問題に直面していました
簡単な方法で問題を解決しました。
1)FaceBookアプリからの最初のログアウト。
2)ログインするためにcilckを実行すると、haskkeyが計算されないことが表示されたときに、開発したアプリケーションを開きます。
3)(右側のタブAndroid studio)Gradle-> Task-> Android-> signing ReportでSHA1署名レポートを生成します。(HEXA文字列)
4)それをbase 64に変換します。( Link )5)FaceBook開発者ページで出力と過去をコピーします。