32

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

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 にキー ハッシュを追加しましたが、まだ機能していません。

4

14 に答える 14

29

これを使用して、アプリを実行したときにキーを表示しました。私の場合、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

于 2013-10-21T02:38:19.287 に答える
10

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

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

于 2014-02-12T02:51:30.300 に答える
5

いい質問です。そして、それには2つの方法があります。通常、Facebook SDK for android を統合する際に、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.

このためのチェックリストがあります:

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

これに関しては、Facebook 開発者サイトが非常に役立ちます。開始ページにあるコードをコピーして、コマンド プロンプトに貼り付けるだけです。つまり:

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

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

ここに画像の説明を入力

于 2014-05-13T10:12:26.690 に答える
3

上記のすべてを試した後、私はこれを試しました..そしてうまくいきました!!!

  1. キー ハッシュをコピーすると、Facebook が例外として提供するものと同じでした。
  2. 最後に a に置き換え"_""/"追加し、"="
  3. Facebookに追加する
  4. また、パッケージ名とアクティビティ名をもう一度確認してください。これは私のために働いた!!。
于 2014-04-19T10:12:25.283 に答える
-1

シングル サインオンを有効にする 以下で [シングル サインオン] を [はい] に設定して、アプリのシングル サインオンを有効にします。ポイントNo.をご確認ください。https://developers.facebook.com/docs/facebook-login/androidの 9

于 2016-12-16T06:33:47.773 に答える