web-dev-qa-db-ja.com

Android app Key Hashは保存されているキーハッシュと一致しません

Facebook SDKでのログインを使用するPlayストアの実稼働アプリケーションがあります。 Eclipseからアプリケーションをデバッグする場合、問題はありませんが、Facebookが許可を求めた後、実稼働中に次のエラーが表示されます。 developers.facebook.comのアプリページに、次のコマンドを使用してkeytoolで生成されたキーハッシュを追加しました。

keytool -exportcert -alias diego -keystore "C:\ Users\Diego\Desktop\CeluChat.KeyStore" | 「C:\ openssl\bin\openssl.exe」sha1-バイナリ| 「C:\ openssl\bin\openssl.exe」base64

CeluChat.KeyStoreは、署名済みアプリケーションをエクスポートするときに使用したキーストアであり、keytoolからパスワードの入力を求められたときに、エクスポート時に同じものを入力しました。

しかし、本番環境で私に与えるエラー(Playストアからダウンロード)は次のとおりです。

10-20 22:21:10.752:W/fb4a(:):BlueServiceQueue(5872):com.facebook.http.protocol.ApiException:キーハッシュVQ3XhZb5_tBH9oGe2WW32DDdNS0は保存されたキーハッシュと一致しません。

例外にあるキーハッシュは、keytoolで生成されたキーハッシュとは異なります。とにかくFacebookにキーハッシュを追加しましたが、まだ機能していません。

31
Diego

Facebookで+、-、および/を_に置き換える方法

したがって、_を+、-、および/に置き換えて、そのハッシュキーを追加してみてください。

うまくいけばうまくいくはずです。

30
Veer

これを使用して、アプリを実行したときにキーを表示しました。私の場合、keytoolコマンドから誤ったキーハッシュを取得していました。間違ったパスワードを(意図的に)入力すると、エラーを受け取る代わりに、誤ったキーが生成されることに注意してください。これを使用して正しいハッシュを取得し、エラーログ内のハッシュと一致するかどうかを確認します

try {
        PackageInfo info =     getPackageManager().getPackageInfo("com.package.mypackage",     PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
            Log.e("MY KEY HASH:", sign);
            Toast.makeText(getApplicationContext(),sign,     Toast.LENGTH_LONG).show();
        }
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

また、何らかの理由で上記の方法が機能しない場合。このAPKを使用して、正しいキーハッシュを生成してみてください。取得しようとしている証明書(デバッグまたはリリース)で署名する必要があることに注意してください。テストデバイスにインストールし、実行します。

http://www.easyfacebookandroidsdk.com/download/keyhash.Zip

27
Jade Byfield

サンプルアプリのキーエントリページにバグを発見しました。Enterを押さずにアプリからハッシュキーを貼り付け、[変更を保存]ボタンをクリックすると、新しく入力したコードは消えますが、ページに[保存済み] !」応答メッセージ。これは正しくありません。保存されませんでした。ハッシュキーを貼り付けた後にEnterキーを押してから、[変更を保存]を押す必要があります。

末尾の=文字を含むキーを保存しました。うまくいきました。

9
Ari Lacenski

返されたエラーメッセージのハッシュキーを単純に入力します。

10-20 22:21:10.752: W/fb4a(:):BlueServiceQueue(5872): com.facebook.http.protocol.ApiException: Key hash VQ3XhZb5_tBH9oGe2WW32DDdNS0 does not match any stored key hashes.

VQ3XhZb5_tBH9oGe2WW32DDdNS

Facebook開発者は、アプリの主要なハッシュを作成します。

この助けを願っています。

7
andresmafra

さて、Windowsを使用している場合はcmdでこのコマンドを使用します。

C:\ Program Files\Java\jdk1.8.0_25\binに移動します

keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -binary | "C:\openssl\bin\openssl.exe" base64

Windowsで openssl-0.9.8e_X64.Zip を使用する必要があるハッシュキーを生成する場合、openssl-0.9.8k_X64.Zipは使用できません

これが解決策です。

6
Hemant Shori

いい質問ですね。そして、それに取り組むには2つの方法があります。私たちが通常行うことは、Android用Facebook SDKを統合する際に、 facebookの開発者向けサイト からの指示に従うことです。

しかし、アプリがプレイストアに出たら、まだ保留中の手順を忘れがちです。そして、同じエラーで終了します:

05-13 14:45:43.882: W/fb4a(:<default>):BlueServiceQueue(25454): Exception during service
05-13 14:45:43.882: W/fb4a(:<default>):BlueServiceQueue(25454): com.facebook.http.protocol.ApiException: Key hash XXXXXXXXXXXXXX does not match any stored key hashes.

Jusはこのためのチェックリストを入手しました。

1)アプリの開発中にデバッグキーを使用する

Facebook開発者サイトはこれに非常に役立ちます。 [はじめに]ページ にあるコードをコピーして、コマンドプロンプトに貼り付けます。 viz:

keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64

それに対するパスワードはAndroidであり、それに続くデバッグキーを取得します。

enter image description here

2)アプリケーションに署名した後、デバッグキーを生成します

アプリケーションをGoogle Playストアにアップロードする準備ができたら、キーを使用して署名する必要があります。キーの値はキーストアから生成されます。これは 彼の答えのSatheesh で説明されています。を使用して:

keytool -exportcert -alias <Alias Name here> -keystore <Path to keystore> | openssl sha1 -binary | openssl base64

これにより、デバッグキーとは異なるキーが提供されます。

enter image description here

5
Kailas

このページの@lucianbaseで提案されているハッシュキーを生成するには、以下の方法に従ってください https://github.com/AntonioCuevaUrraco/nativescript-facebook-login/issues/14

Android studioまたはcmdツールを使用してアプリのSHA1キーを生成します。次のようにコピーします。CD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5 :5A:72:64:DD:26:8D:44:84を開いて http://tomeko.net/online_tools/hex_to_base64.php を開き、SHA1値をbase64に変換します。生成されたハッシュ "******************** ="を取得し、キーハッシュをFacebookアプリにコピーする必要があります。

4
Yugal Modi

上記のすべてを試した後、これを試してみました。

  1. キーハッシュをコピーすることは、Facebookが例外について提供したものと同じでした。
  2. 置換"_" with "/"および"=" 終わりに、
  3. Facebookに追加
  4. また、パッケージ名とアクティビティ名をもう一度確認してください。これは私のために働いた!!。
3

https://developers.facebook.com/app application ...!内のエラーキーハッシュを置き換えるだけです!

確実に機能する100パーセント。

-スニル

実際、最良かつ簡単な方法はこのようなものです。電話画面にその問題が表示される場合。 Android studio LOGCATでこの問題が発生するはずです。このようになります。

01-26 14:58:22.885 14851-19534/? W/fb4a.BlueServiceQueue: Exception during service
                                                          X.1xO: [code] 404 [message]: Key hash 961x8mIbWmA7TRRpbk...= does not match any stored key hashes. (404) [extra]: null
                                                              at X.0fG.D(:240135)
                                                              at X.0k8.F(:255078)
                                                              at X.3gX.EUB(:738232)
                                                              at X.0fo.handleResponse(:242693)
                                                              at X.0k5.run(:254998)
                                                              at Java.util.concurrent.Executors$RunnableAdapter.call(Executors.Java:428)
                                                              at X.0NH.run(:187661)
                                                              at X.0JQ.run(:49671)
                                                              at Java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.Java:1133)
                                                              at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:607)
                                                              at X.0NM.run(:187873)
                                                              at Java.lang.Thread.run(Thread.Java:761)

私はそれをプライベートにしたlogcatからこのハッシュキーをコピーし(...)、Facebook開発者ページに貼り付けます。問題をすぐに解決します。また、リリースされたAPKのハッシュキーが、Google Playからダウンロードされた元のハッシュキーと異なることを確認してください。

0
mehmet