web-dev-qa-db-ja.com

Facebookキーハッシュが保存されているキーハッシュと一致しません

Facebookのハッシュキーに本当に問題があります。 Eclipseで生成しました。証拠:

それから https://developers.facebook.com/ に行き、新しいアプリを登録しました。

そして最後に、Facebook開発者の設定でハッシュキーを設定しました:

しかし、私は同じエラーログを取得し続けます:「キーハッシュB5dWUEYfZJL/........... jyA =は保存されたキーハッシュと一致しません」

私が間違ったことや、この問題を解決する方法を誰かが知っていますか?自分のアプリ内でHelloFacebookSampleのIDと名前を使用すると、すべてが機能します。そのため、私が設定した可能性が最も高いキーハッシュ、ID、または名前を使用する必要があります。

ありがとう、イェンテ

56
Yenthe

何時間も試してみて、ようやく解決策を見つけました。

  1. FacebookのWebサイト(developers.facebook.com)でアプリを削除します
  2. C:\Users\yourUserName\.Androidの下のdebug.keystoreファイルを削除します
  3. 新しいキーを生成します(アプリを再度実行します)
  4. Developers.facebook.comで新しいアプリを作成し、新しいハッシュキーを追加します
  5. アプリを再実行します
  6. 成功!
43
Yenthe

Facebookアプリをインストールせずにログインが機能し、「ハッシュキーが一致しません」というエラーのためにFacebookアプリをインストールしたときに機能しない場合は、次の手順を実行します

1)アプリを起動し、facebookでログインしてみます。ダイアログが開き、「facebook開発者コンソールでキーが見つかりませんでした。また、ハッシュキーも表示されます。

2)そのハッシュキーを書き留めます。

3)最初にAPIキーを生成したFacebook開発者コンソールにそれを配置し、新規で保存してハッシュキーを削除します。これで完了です。以前に使用したキーストアで公開されたアプリをダウンロードした人は誰でもFacebookにログインできます。

60
Narender Gusain

同様の問題が発生しました。解決策は驚くほど簡単です。

エラーメッセージは次のようになります。

07-05 ...... Invalid key hash. The key hash sL1***************VY= does not match any stored key hashes. Configure your app key hashes at http://developers.facebook.com/apps/150*******778
07-05 ......     at com.facebook.login.LoginManager.onActivityResult(LoginManager.Java:191)

https://developers.facebook.com にログインし、[設定]タブを選択して、キーハッシュ「sL1 *************** VY」を追加します。 Androidパネルに保存されているキーハッシュのリストに=を追加します。

29
Darsen Lu

開発中に同じ問題に直面し、facebookで共有をテストするためにハッシュキーを取得する必要があり、これを解決しながら、いくつかの問題を経験しました

1- openfaceコマンドを使用してハッシュキーを取得するために提供するコマンドfacebookは、パッケージ情報からコードを使用して署名を抽出することで取得した正しいハッシュを提供しませんでした。 2番目の方法でハッシュを取得するのは正しかった。

2-何らかの理由で、ドキュメントで開発者の設定に移動して「サンプルアプリ」のハッシュキーを追加するように指示されているため、開発者のすべてのハッシュキーがそこにあるべきだと思いましたが、それはすべてのアプリにあります追加する独自のハッシュキーフィールドを使用して、アプリ/設定/ Androidに移動します。

enter image description here

まあそれは..そして、私はWindows 7 x64ビットでopenssl-0.9.8k_X64を使用し、それはちょうど間違ったハッシュを生成する記録のために、私は理由がわからない

このコードを使用してハッシュを取得しました。

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.e("KeyHash:", e.toString());
    } catch (NoSuchAlgorithmException e) {
        Log.e("KeyHash:", e.toString());
    }
}

しかし、これは少なくとも私のデバイスとマシン上でログに正しいキーハッシュを印刷しないかもしれないことに注意してください、それをデバッグするとき、時計ではログを印刷する直前に正しいハッシュを表示しますが、ログでは別のハッシュを表示します最初のものは正しいものでした。

とにかく、コマンドまたはEclipseを使用してキーのSHA 16進シーケンスを表示し、それをオンラインでBase 64に変換することもできます。役立つWebサイトがあります http://tomeko.net/ online_tools/hex_to_base64.php?lang = en

幸運を

26

これは、発生する可能性のあるケースであり、私のエラーを解決したものです:

実行後の https://developers.facebook.com/quickstarts

OSX/Linux:

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

Windows:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.Android\debug.keystore | openssl sha1 -binary | openssl base64

Enter keystore password:が要求されたとき、間違ったパスワードを誤って入力した可能性があります、デフォルトのパスワードは " Android 」。他のパスワードを入力すると、異なる/間違ったハッシュキーが与えられます。 アプリページのKey Hashesフィールドに正しいハッシュキーを貼り付けます

これは私の問題を解決しました、これが私がこの特定のエラーを犯した人に役立つことを願っています

17
Kewal Shah

Eclipse/keytoolからSHA1キーを追加すると、FBでアプリを作成するときにのみ役立ち、再構築後には常にOPエラーが発生しました。

問題を解決したのは、エラーメッセージのキーをFacebookダッシュボード設定に追加することでした。

16
Peter File

私はこの問題を2か月間経験しました。私の主要なハッシュは9個まで並んでいます。今日、ようやく簡単な解決策が見つかりました。

ステップ1:

携帯電話のfacebook開発者ページからダウンロードしたfacebook sdkをインストールします。通常のFacebookアプリをインストールしないでください。 Facebookにログインできることを確認してください。次にログアウトします。

ステップ2:

プレイストアにアップロードするときのように、アプリをapkとして最終リリースキーでエクスポートします。

ステップ3:

USBケーブルまたはUSBスティックを介して携帯電話にApkファイルを配置します。

ステップ4:

ファイルマネージャーを使用してアプリをインストールします。たとえば、 https://play.google.com/store/apps/details?id=com.rhmsoft.fm

ステップ5:

アプリを起動して、facebookでログインしてみてください。ダイアログが開き、「facebook開発者コンソールにキーが見つかりませんでした」と表示されます。

ステップ6:

キーを書き留めます。

STEP 7:

Facebook開発者コンソールに保存して保存します。これで完了です。以前に使用したキーストアで公開されたアプリをダウンロードした人は誰でもFacebookにログインできます。

楽しい

7
Sakramento
  1. キーハッシュ値を確認します。
  2. 携帯電話からFacebookアプリケーションをアンインストールします。
  3. その後、SDKを使用して再試行してください。

これで私の問題が解決しました。

6
Rezaul Karim

クレイジーに見えますが、動作します

本当に問題があるのは、Facebookのプライベートアカウントがこのアプリを取得し、このアカウントのハッシュキーが比較できないためです。

しかし、実際のユーザーでこのエラーに直面する必要はありません。しかし、私はわからない

最終的に次のステップに従ってください:

  1. ログインしようとするプライベートFacebookアカウントに移動します
  2. 次に、アプリディレクトリの[その他]をクリックします

enter image description here

  1. 設定をクリック

enter image description here

そして、クロスをクリックします

enter image description here

そして今、facebookでログインできます。しかし、次回ログアウトして再度ログインしようとすると、同じ問題に直面します...

それも奇妙です...

しかし、私はFacebookがこれについて知らないと信じていない...

.AndroidフォルダーにあるAndroidのdebug.keystoreを含むデバッグキーストアを使用すると、奇妙な問題が発生していました。 AndroidアプリでFacebookのログインボタンを使用したログインは、初めて希望どおりに完全に行われます。しかし、ログアウトしてログインしようとすると、このアプリにはAndroidキーハッシュが設定されていませんというエラーが表示されます。 http:// ...にアクセスしてください。

Keytoolコマンド(keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -sigalg SHA1withRSA -keysize 2048 -validity 10000)を使用してキーストアを作成し、このキーストアをプロジェクトの最上位の親フォルダーに配置して、プロジェクトbuild.gradleファイルに次のエントリを入力すると、問題が解決しました。

 signingConfigs {
        release {
            storeFile file("my-release-key.keystore")
            storePassword "passpass"
            keyAlias "alias_name"
            keyPassword "passpass"
        }    }

コマンドラインを使用して生成するのではなく、AndroidアクティビティのonCreate()内で常に次のメソッドを使用して、キーハッシュ値を取得する(アプリのdeveloper.facebook.comサイトに登録する)ことに注意してください。場合によってはコマンドラインとしてのハッシュ値は間違ったキーハッシュを出力する可能性があります:

    public  void showHashKey(Context context) {
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo("com.superreceptionist",
                    PackageManager.GET_SIGNATURES);
            for (Android.content.pm.Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());

                 String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
                Log.e("KeyHash:", sign);
                //  Toast.makeText(getApplicationContext(),sign,     Toast.LENGTH_LONG).show();
            }
            Log.d("KeyHash:", "****------------***");
        } catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
        } catch (NoSuchAlgorithmException e) {
e.printStackTrace();
        }
    }
3
Sandeep.R

同じ問題が発生しました。間違ったハッシュキーを使用していることがわかりました。間違ったエイリアスでコマンドを実行したため、keytoolは間違ったハッシュキーを出力しました。
コマンドをもう一度確認してください。問題が解決します

keytool -exportcert -alias "test fb sdk" -storepass Android -keypass Android -keystore "C:\keystore.keystore" | openssl sha1 -binary | openssl base64
3
Leo Nguyen

リリースハッシュキーを生成している間、これに注意してください

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

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

OR

以下のフローを使用してください

これは私がこの問題を解決した方法です。私の場合、Java jdk\binフォルダーにあるAPKをPCにダウンロードしますC:\ Program Files\Java\jdk1.7.0_121\bin go to Java jdk\binフォルダーでcmdを実行し、cmdに次のコマンドをコピーします

keytool -list -printcert -jarfile yourapkname.apk

このCD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84のように、SHA1値をクリップボードにコピーします。 open http://tomeko.net/online_tools/hex_to_base64.php を使用して、SHA1値をbase64に変換します。

1
thamim

同様の問題が発生しました。アプリに署名してGoogle PlayStoreに公開した後、ハッシュが変更されたようです。 developer.facebook.com/app//settingsにある私のアプリのキーハッシュにメッセージを送るFacebookに、新しいハッシュを追加しました(前述のとおり)。今では再び動作します。

1
Ramon

これは私がこの問題を解決した方法です

  1. Android右パネルのスタジオGradle>App>Android>signingReport copySHA1
  2. http://tomeko.net/online_tools/hex_to_base64.php を開いて、SHA1値をbase64に変換します。

Facebookは、生成されたハッシュ「******************** =」を取得して、キーハッシュをFacebookアプリにコピーする必要があります。

1
Govan

Facebook Androidガイド自体が提供する方法を使用して同様の問題に直面している場合、私の問題はopenssl自体によってハッシュが誤って生成されたためである可能性があります。

これに対処する1つの方法は次のとおりです。

  1. このツールを使用してsha1を取得します。

keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v

  1. このツールを使用してbase64に変換します

http://tomeko.net/online_tools/hex_to_base64.php

クレジット:

https://github.com/facebook/react-native-fbsdk/issues/424#issuecomment-469047955

0
Eimihar

Google-services.jsonを確認してください。違うかもしれません。最新のgoogle-services.jsonをダウンロードして、アプリを実行します。それが役に立てば幸い。

0
Shubham Gupta

「アプリのシングルサインオンを有効にする」ため、1回しか機能しません。 developer.facebookにアクセスして、settings.itを確認してください

0
kshitij

私が見つけたのは、Google Playstoreにアップロードされるアプリに署名するために使用された私のSHA-1が間違っていたことです。私のアプリは、Google Playストアによって別のトークンで署名されていることに気付きました。私は次の手順に従いました。

  1. Google Playコンソールに移動します
  2. リリース管理をクリックします
  3. アプリ署名をクリックします
  4. アプリ署名証明書SHA-1をBase64に変換します(これは現在のアップロード証明書とは異なります)
  5. Base64に変換されたSHA-1をFacebook Developerダッシュボード設定に入力します

    FacebookがAndroidデバイスにダウンロードされると、アプリにログインできるようになりました。

0
tnaught

間違ったパスワードを使用している可能性があります。デバッグキーストアのデフォルトパスワードはAndroidです。

0