web-dev-qa-db-ja.com

Android Facebook SDK:リリースキーハッシュを生成

ユーザーがFacebookでログインできるアプリを作成しています。

次のようなハッシュキーを作成しました。

try {
         PackageInfo info = getPackageManager().getPackageInfo(
         "com.app.package",
         PackageManager.GET_SIGNATURES);
         for (Signature signature : info.signatures) {
         MessageDigest md = MessageDigest.getInstance("SHA");
         md.update(signature.toByteArray());
         Log.d("KeyHash", "KeyHash:"+ Base64.encodeToString(md.digest(),
         Base64.DEFAULT));
         Toast.makeText(getApplicationContext(), Base64.encodeToString(md.digest(),
                 Base64.DEFAULT), Toast.LENGTH_LONG).show();
         }
         } catch (NameNotFoundException e) {

         } catch (NoSuchAlgorithmException e) {

         }

デバッグモードでは、すべてがうまく機能します。

リリース用にプロジェクトをエクスポートすると、次のエラーが表示されます。

"Invalid key hash. The key hash ****************** does not match any stored key hashes"

Facebook Developerダッシュボードに印刷されたキーを貼り付けますが、アプリケーションは引き続きそのエラーを表示します。

私のアクティビティの完全なパッケージは "com.app.package.views "とダッシュボードで(Google Playパッケージ名として)このパッケージを使用しようとしましたが、何も変更されませんでした。

どうすれば解決できますか?適切なリリースキーハッシュを生成するにはどうすればよいですか?

31

Facebookがログインアプリケーションの作成に提供する手順を実行しましたか?

リリースキーストアの開始時に取得した「Production keyhash」が必要です。

コマンドラインから:

keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64

そして、facebookアプリのページオプションにこのキーを追加します。

詳細: https://developers.facebook.com/docs/Android/getting-started/

45
Abhi

私は解決策を見つけます。 Mac用

これを使用してYOUR_RELEASE_KEY_ALIASを取得します。

keytool -list -keystore /Users/***/Documents/keystore/***.jks

そして、これはあなたのリリースキーハッシュを取得します:

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore /Users/***/Documents/keystore/***.jks | openssl sha1 -binary | openssl base64

わたしにはできる。

37
Rahim Rahimov

最も簡単なソリューション。

1)APKに署名します。

2)デバイスをマシンに接続し、署名済みapkを実際のデバイスにインストールします。

3)Facebookのログインを押すと、logcatで「無効なキーハッシュです。キーハッシュ「xxx」は保存されたキーと一致しません。..」というエラーが表示されます。

4)logcatハッシュキーをコピーし、このキーをdevelopers.facebook.com/apps/104...../settings/に配置します

28
Bharat Hangarge

Word "openssl"をopenssl構造内の1つのファイルのパスに置き換える必要があります。

したがって、私のCMDコマンドは次のとおりです。

C:\Program Files\Java\jre1.8.0_45\bin>keytool -exportcert -alias Informatheus -keystore C:\Users\Atendimento\Dropbox\AndroidKeystore\Keystore | C:\Users\Atendimento\Desktop\openssl\bin\openssl sha1 -binary | C:\Users\Atendimento\Desktop\openssl\bin\openssl base64

動いた。

8
Informatheus

後で参照できるように、Playストアに既にアプリがある場合は、次のことができます。

  1. _Release Management_に移動します

  2. _App Signing_で_Release Management_を選択します

  3. SHA1キーは16進形式_App signing certificate_で表示できます。

  4. SHA1を16進形式でコピーし、base64形式に変換します。この link を使用して、16進の_SHA1:_部分なしで実行できます。

  5. Facebook開発者コンソールに移動し、_settings —> basic –> key hashes_にキーを追加します(base 64への変換後)。

7
Nadhir Falta

//このメソッドを最初のアクティビティに追加し、ログを開いてBase64タグを検索します。これがHashkeyです。

public void getHashkey(){
    try {
        PackageInfo info = getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());

            Log.i("Base64", Base64.encodeToString(md.digest(),Base64.NO_WRAP));
        }
    } catch (PackageManager.NameNotFoundException e) {
        Log.d("Name not found", e.getMessage(), e);

    } catch (NoSuchAlgorithmException e) {
        Log.d("Error", e.getMessage(), e);
    }
}
3

Facebook SDKは2つの異なるキーを使用します。1つは開発フェーズで使用できるデバッグキーで、もう1つは署名済みアプリケーションパッケージを作成した後に使用されるリリースキーです。デバッグキーとリリースキーの作成方法に関するリンクを次に示します。

Developer.Facebook

this SO post。

1
MajorGeek

ハッシュキーでリリースされたapkを取得する最も簡単な方法は、次のコマンドを使用してリリースされたapkのSHA1キーを取得することです。

keytool -list -v -keystore keystore_path.jks -alias keystoreAlias

そのため、SHA1キーを取得します。そのキーをコピーし、次のサイトを使用してハッシュキーを生成します。

ハッシュキーを取得するためのリンク

出力(base64)を取得します。コピーして、必要な場所で使用します。

0
Pratibha Sarode