web-dev-qa-db-ja.com

Android Facebook SDK:Google Playのアップロード時に、キーハッシュが保存されているキーハッシュと一致しません

私のアプリはユーザーのログインに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)

キーハッシュが何らかの方法で変更された可能性がありますか?

18
leojg

Facebookがログインアプリケーションの作成に提供する手順を実行しましたか?

リリースキーストアの開始時に取得した「Production keyhash」が必要です。

コマンドラインから:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

そして、Facebookアプリのページオプションにこのキーを追加します。

詳細: Facebook docs

42
Ramon Vicente

これがなぜ機能しなかったのかを理解しようとして丸一日過ごしました...

本番用のハッシュキーを生成する場合、Windowsでopenssl-0.9.8e_X64.Zipを使用する必要がありますが、openssl-0.9.8k_X64.Zip

バージョンは異なるハッシュキーを生成します。何らかの理由で9.8kが正しく動作しません... 9.8eが動作します

参照

55
Milk Man

これは私にとって間違ったキーを与えていました。

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());
    }
}
  1. .keyStoreを使用してPlayストアで公開するためにアプリをエクスポートします
  2. Playストアにアップロードする前にアプリをインストールして実行し、印刷されたkeyHashに注意してください。
  3. KeyHashをFacebookアプリに追加します。

これが誰かを助けることを願っています。

21
patrickfdsouza

ApiExceptionのスタックトレースから欠落しているハッシュを取得することもできます:Key hash XXXXXXX does not match any stored key hashes。すでにありますが、=最後に。 XXXXXXX =を使用します。

12
Micky

これは私にはうまく機能しています

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

どこ <RELEASE_KEY_ALIAS>は、署名済みアプリケーションを作成する際のエイリアス名です。

enter image description here

そして<RELEASE_KEY_PATH>is下の写真の場所そして、パスワードを入力してくださいkey create password下の写真のAndroidの代わりに

enter image description here

5
Satheesh

上記の解決策はある程度正しいです。しかし、誰かがまだ問題に直面している場合。開発者プロファイルからキーを削除し、最後にもう一度writing =を追加してEnterを押します。設定と開発者の両方にキーを追加する必要があります。

Google Playへのアプリのリリースとリリースキーの使用に関する問題に直面していました

0
Prayag

簡単な方法で問題を解決しました。

1)FaceBookアプリからの最初のログアウト。

2)ログインするためにcilckを実行すると、haskkeyが計算されないことが表示されたときに、開発したアプリケーションを開きます。

3)(右側のタブAndroid studio)Gradle-> Task-> Android-> signing ReportでSHA1署名レポートを生成します。(HEXA文字列)

4)それをbase 64に変換します。( Link )5)FaceBook開発者ページで出力と過去をコピーします。


0
vinay shetty