Facebookのハッシュキーに本当に問題があります。 Eclipseで生成しました。証拠:
それから https://developers.facebook.com/ に行き、新しいアプリを登録しました。
そして最後に、Facebook開発者の設定でハッシュキーを設定しました:
しかし、私は同じエラーログを取得し続けます:「キーハッシュB5dWUEYfZJL/........... jyA =は保存されたキーハッシュと一致しません」
私が間違ったことや、この問題を解決する方法を誰かが知っていますか?自分のアプリ内でHelloFacebookSampleのIDと名前を使用すると、すべてが機能します。そのため、私が設定した可能性が最も高いキーハッシュ、ID、または名前を使用する必要があります。
ありがとう、イェンテ
何時間も試してみて、ようやく解決策を見つけました。
C:\Users\yourUserName\.Android
の下のdebug.keystoreファイルを削除しますFacebookアプリをインストールせずにログインが機能し、「ハッシュキーが一致しません」というエラーのためにFacebookアプリをインストールしたときに機能しない場合は、次の手順を実行します
1)アプリを起動し、facebookでログインしてみます。ダイアログが開き、「facebook開発者コンソールでキーが見つかりませんでした。また、ハッシュキーも表示されます。
2)そのハッシュキーを書き留めます。
3)最初にAPIキーを生成したFacebook開発者コンソールにそれを配置し、新規で保存してハッシュキーを削除します。これで完了です。以前に使用したキーストアで公開されたアプリをダウンロードした人は誰でもFacebookにログインできます。
同様の問題が発生しました。解決策は驚くほど簡単です。
エラーメッセージは次のようになります。
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パネルに保存されているキーハッシュのリストに=を追加します。
開発中に同じ問題に直面し、facebookで共有をテストするためにハッシュキーを取得する必要があり、これを解決しながら、いくつかの問題を経験しました
1- openfaceコマンドを使用してハッシュキーを取得するために提供するコマンドfacebookは、パッケージ情報からコードを使用して署名を抽出することで取得した正しいハッシュを提供しませんでした。 2番目の方法でハッシュを取得するのは正しかった。
2-何らかの理由で、ドキュメントで開発者の設定に移動して「サンプルアプリ」のハッシュキーを追加するように指示されているため、開発者のすべてのハッシュキーがそこにあるべきだと思いましたが、それはすべてのアプリにあります追加する独自のハッシュキーフィールドを使用して、アプリ/設定/ Androidに移動します。
まあそれは..そして、私は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
幸運を
これは、発生する可能性のあるケースであり、私のエラーを解決したものです:
実行後の 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
フィールドに正しいハッシュキーを貼り付けます
これは私の問題を解決しました、これが私がこの特定のエラーを犯した人に役立つことを願っています
Eclipse/keytoolからSHA1キーを追加すると、FBでアプリを作成するときにのみ役立ち、再構築後には常にOPエラーが発生しました。
問題を解決したのは、エラーメッセージのキーをFacebookダッシュボード設定に追加することでした。
私はこの問題を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にログインできます。
楽しい
これで私の問題が解決しました。
クレイジーに見えますが、動作します
本当に問題があるのは、Facebookのプライベートアカウントがこのアプリを取得し、このアカウントのハッシュキーが比較できないためです。
しかし、実際のユーザーでこのエラーに直面する必要はありません。しかし、私はわからない
最終的に次のステップに従ってください:
そして、クロスをクリックします
そして今、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();
}
}
同じ問題が発生しました。間違ったハッシュキーを使用していることがわかりました。間違ったエイリアスでコマンドを実行したため、keytoolは間違ったハッシュキーを出力しました。
コマンドをもう一度確認してください。問題が解決します
keytool -exportcert -alias "test fb sdk" -storepass Android -keypass Android -keystore "C:\keystore.keystore" | openssl sha1 -binary | openssl base64
リリースハッシュキーを生成している間、これに注意してください
本番用のハッシュキーを生成する場合、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に変換します。
同様の問題が発生しました。アプリに署名してGoogle PlayStoreに公開した後、ハッシュが変更されたようです。 developer.facebook.com/app//settingsにある私のアプリのキーハッシュにメッセージを送るFacebookに、新しいハッシュを追加しました(前述のとおり)。今では再び動作します。
これは私がこの問題を解決した方法です
Gradle>App>Android>signingReport
copySHA1http://tomeko.net/online_tools/hex_to_base64.php を開いて、SHA1値をbase64に変換します。
Facebookは、生成されたハッシュ「******************** =」を取得して、キーハッシュをFacebookアプリにコピーする必要があります。
Facebook Androidガイド自体が提供する方法を使用して同様の問題に直面している場合、私の問題はopenssl自体によってハッシュが誤って生成されたためである可能性があります。
これに対処する1つの方法は次のとおりです。
keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v
http://tomeko.net/online_tools/hex_to_base64.php
クレジット:
https://github.com/facebook/react-native-fbsdk/issues/424#issuecomment-469047955
Google-services.jsonを確認してください。違うかもしれません。最新のgoogle-services.jsonをダウンロードして、アプリを実行します。それが役に立てば幸い。
「アプリのシングルサインオンを有効にする」ため、1回しか機能しません。 developer.facebookにアクセスして、settings.itを確認してください
私が見つけたのは、Google Playstoreにアップロードされるアプリに署名するために使用された私のSHA-1が間違っていたことです。私のアプリは、Google Playストアによって別のトークンで署名されていることに気付きました。私は次の手順に従いました。
Base64に変換されたSHA-1をFacebook Developerダッシュボード設定に入力します
FacebookがAndroidデバイスにダウンロードされると、アプリにログインできるようになりました。
間違ったパスワードを使用している可能性があります。デバッグキーストアのデフォルトパスワードはAndroidです。