web-dev-qa-db-ja.com

androidでFacebookログイン中にキーハッシュが一致しません

私のアプリはシンプルなFacebookログインを使用しています。アプリダッシュボードのkey_hashセクションにキーハッシュを入力しました。正常にログインできました。今、私はアプリを公開してログインしようとしましたが、ウェブビューにエラーメッセージが表示されています

"Invalid Android_key parameter. The key rX6qeRitkFCWui3de74rxB_qc1s does not match any allowed key. Configure your app key hashes at http://developers.facebook.com/apps/<my_fb_app_id>". 

実際、rX6qeRitkFCWui3de74rxB_qc1sは、ネイティブアプリにあるキーハッシュではありません。どこから来たの?とにかく、ネイティブアプリでもこのキーハッシュを入力しましたが、同じエラーメッセージが表示され、まだログインできませんでした。どこがおかしいの?私を助けてください。

17
Santhosh

コーディングを通じてハッシュキーを生成できます。1つのことを行うだけです。このコードをメインクラス(ファーストクラス)に貼り付けてから、アプリを実行し、ハッシュキーを見つけるlogcatを確認します。

もう1つ、このパッケージ名「com.example.creeper」をパッケージ名に置き換えます。

try{
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.example.creeper", 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) {

    } catch (NoSuchAlgorithmException e) {

}
26
Rishi Gautam

この問題に直面している場合は、このキーを developer.facebook.com に入れてください

enter image description here

次に、アプリがliveon developer.facebook.com であることを確認します

この緑色の円は、アプリがライブであることを示しています enter image description here

そうでない場合は、この2つの手順に従ってアプリを公開します

ステップ1アプリケーションに移動->設定して連絡先メールアドレスを追加し、変更を保存します

Setp 2次にStatus&Reviewオプションに移動し、このトグルがYesであることを確認しますスクリーンショットを追加しました

enter image description here

11
Arpit Patel

公開したアプリの署名に使用するアプリのキーストアファイルを使用して、新しいキーハッシュを生成してみてください。この問題は、署名されていないapkファイルでのみ機能するデバッグキーストアによって生成されたキーハッシュを提供することによって発生する可能性があります。キーハッシュの生成方法を理解するには、次のリンクのステップ5を参照してください https://developers.facebook.com/docs/getting-started/facebook-sdk-for-Android/3.0/

facebookのアプリ設定ページでも同じように更新します。

パッケージ名とクラス名が正しいかどうかも確認してください。

5
Mahesh

.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アクティビティのキーのハッシュ値を取得する(アプリのdeveloper.facebook.comサイトに登録する)のonCreate()内で常に次のメソッドを使用することに注意してください。 line(keytool -exportcert -alias -keystore | openssl sha1 -binary | openssl base64)いくつかのケースでコマンドラインが間違ったキーハッシュを出力する可能性があるため、ハッシュ値を生成します。

    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

Debug.keystoreからキーハッシュするか、リリースキーで署名した場合は、それよりもキーハッシュする必要があります。エイリアス名も正しいことを確認してください。それはあなたのキーハッシュに影響を及ぼします。

これを確認してください: Facebookキーハッシュの作成方法

2
Luser_k

たとえば、エラーで提供されるキーは"rX6qeRitkFCWui3de74rxB_qc1s"、次にFacebookのハッシュコードのリスト、このコードを末尾の最後に配置してみます"=" 取得 rX6qeRitkFCWui3de74rxB_qc1s=そして、それが機能するかどうかを確認します。

2
Fernanda Leite

Facebookの開発者で新しいキーハッシュを生成して編集し、新しいキーハッシュでアプリを再度登録してください。

1
anddevmanu

Xamarinサンプルを機能させようとしている人のために、C#バージョンを紹介します。

    public  void showHashKey(Context context) 
    {
        try {
            PackageInfo info = context.PackageManager.GetPackageInfo("com.facebook.samples.hellofacebook", PackageInfoFlags.Signatures);
            foreach (Android.Content.PM.Signature signature in info.Signatures) {
                MessageDigest md = MessageDigest.GetInstance("SHA");
                md.Update(signature.ToByteArray());

                var sign = Base64.EncodeToString(md.Digest(), Base64Flags.Default);
                Log.Info("KeyHash:", sign);
            }
            Log..Info("KeyHash:", "****------------***");
        } catch (PackageManager.NameNotFoundException e) {
            e.PrintStackTrace();
        } catch (NoSuchAlgorithmException e) {
            e.PrintStackTrace();
        }
    }
1
BenBtg

私にとっては、keytoolコマンドを実行してパスワードの入力を求められたとき、これをハッシュのパスワードを選択する必要があると解釈しました。実際、キーストア(ハッシュが保持されている場所)にパスワードを提供する必要があります。面白いのは(面白くない、「ハハ」)、パスワードを受け入れてハッシュを出力します。そのため、ハッシュが一致しませんでした。幸運なことに、私はずっと前にOS Xキーチェーンにパスワードを保存していたので、本当にそれが何であるかを見つけました。正しいパスワードを試してみたところ、異なるハッシュが得られました。デフォルトのキーストアのパスワードはAndroidであるため、試してみてください。不足している可能性があります。

ハッシュを出力するのではなく、間違ったパスワードはあなたを拒否すべきだと本当に思っています。これがバグかどうかは疑問です。もしそうなら、コメントにバグレポートのリンクを残してください。

0
ABCD.ca