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にキーハッシュを追加しましたが、まだ機能していません。
Facebookで+、-、および/を_に置き換える方法
したがって、_を+、-、および/に置き換えて、そのハッシュキーを追加してみてください。
うまくいけばうまくいくはずです。
これを使用して、アプリを実行したときにキーを表示しました。私の場合、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を使用して、正しいキーハッシュを生成してみてください。取得しようとしている証明書(デバッグまたはリリース)で署名する必要があることに注意してください。テストデバイスにインストールし、実行します。
サンプルアプリのキーエントリページにバグを発見しました。Enterを押さずにアプリからハッシュキーを貼り付け、[変更を保存]ボタンをクリックすると、新しく入力したコードは消えますが、ページに[保存済み] !」応答メッセージ。これは正しくありません。保存されませんでした。ハッシュキーを貼り付けた後にEnterキーを押してから、[変更を保存]を押す必要があります。
末尾の=文字を含むキーを保存しました。うまくいきました。
返されたエラーメッセージのハッシュキーを単純に入力します。
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開発者は、アプリの主要なハッシュを作成します。
この助けを願っています。
さて、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は使用できません
これが解決策です。
いい質問ですね。そして、それに取り組むには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であり、それに続くデバッグキーを取得します。
2)アプリケーションに署名した後、デバッグキーを生成します
アプリケーションをGoogle Playストアにアップロードする準備ができたら、キーを使用して署名する必要があります。キーの値はキーストアから生成されます。これは 彼の答えのSatheesh で説明されています。を使用して:
keytool -exportcert -alias <Alias Name here> -keystore <Path to keystore> | openssl sha1 -binary | openssl base64
これにより、デバッグキーとは異なるキーが提供されます。
このページの@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アプリにコピーする必要があります。
上記のすべてを試した後、これを試してみました。
"_"
with "/"
および"="
終わりに、実際、最良かつ簡単な方法はこのようなものです。電話画面にその問題が表示される場合。 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からダウンロードされた元のハッシュキーと異なることを確認してください。