Android-Facebookアプリのキーハッシュ


229

私はFacebookアプリの投稿機能を統合したいAndroidアプリに取り組んでいます。私はFacebook-Android SDKをダウンロードし、そこにreadme.md(テキストファイル)を取得しました。そこには、Androidのキーハッシュを生成することが記載されています。どうすれば生成できますか?



2
まだ問題が解決しない場合は、こちらをチェックしてください
チンタンケティヤ

これを使用して、デバッグおよびリリースモード用のHashKeyを生成します。stackoverflow.com/questions/7506392/…–
Naeem Ibrahim

キーを入手するには、このビデオを
サントス

回答:


310

ここに手順があります

  1. Googleのコードからopensslをダウンロードします(64ビットマシンの場合は、 openssl-0.9.8e X64を最新バージョンではなくダウンロードます)。

  2. それを抽出します。C:/にフォルダー-OpenSSLを作成し、抽出したコードをここにコピーします。

  3. debug.keystoreファイルのパスを検出します。uが見つからなかった場合は、C:/で検索し、次のステップのコマンドでパスを使用します。

  4. keytool.exeパスを検出し、コマンドプロンプトでそのdir /に移動して、このコマンドを1行で実行します-

    $ keytool -exportcert -alias androiddebugkey -keystore "C:\ Documents and Settings \ Administrator.android \ debug.keystore" | "C:\ OpenSSL \ bin \ openssl" sha1 -binary | "C:\ OpenSSL \ bin \ openssl" base64

    • パスワードを要求し、アンドロイドを置く
    • それで全部です。あなたはキーハッシュを取得します

詳細はこちらをご覧ください


5
この答えは、Win7 x64ではほぼうまくいきました。ただし、結果のエンコードされた証明書は正しくありませんでした。以下のブライアン・ベダードの答えは正しい証明書の値を生成します。窓のパイピングがどういうわけか原因だと思います。
Walt Armor

10
64ビットユーザーへの注意:これはバージョンopenssl-0.9.8e X64でのみ機能し、openssl-0.9.8k X64では使用できません
Nicola Peluchetti

私のシステム用にopenssl-0.9.8e X64をダウンロードして解凍しました。データが含まれている1つのファイル以外は何も含まれていません。詳細を教えてください。
ラビキラン

2
コマンドは、Windowsシステムではjavaのbinフォルダーで実行する必要があります。
アントロメット

1
@HanishSharmaを省いてみてください$
ban-geoengineering

241

[2020を編集]-> ここで答えを完全にお勧めします。アンドロイドスタジオを使用する方がずっと簡単、コードを書く必要もありません。

このコードはどのアクティビティでも使用できます。デバッグキーであるlogcatにハッシュキーを記録します。これは簡単で、SSLを使用するよりも安心です。

PackageInfo info;
try {
    info = getPackageManager().getPackageInfo("com.you.name", PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        String something = new String(Base64.encode(md.digest(), 0));
        //String something = new String(Base64.encodeBytes(md.digest()));
        Log.e("hash key", something);
    }
} catch (NameNotFoundException e1) {
    Log.e("name not found", e1.toString());
} catch (NoSuchAlgorithmException e) {
    Log.e("no such an algorithm", e.toString());
} catch (Exception e) {
    Log.e("exception", e.toString());
}

キーを知った後でコードを削除できます;)


27
みんな、気をつけて、APKを作成した後、キーハッシュが変更されます!このコードを使用すると、デバッグキーストアハッシュを取得しますが、apkを作成するときは別のハッシュです。エミュレーターでur apkを試行した後、ログからキャプチャし、コードを削除して、このログなしで再度エクスポートします:)-面倒です。 Dしかし、私にとっては、keytoolよりも簡単で、幸運でした;)
Bassem Wissa

4
OpenSSLは常に問題を作成します。この方法が最適です。空のアプリを作成し、キーを印刷して使用します。ありがとう!!
AnhSirk Dasarp 2013

1
これは、最も簡単な解決策です。keytoolコマンドを使用して、間違ったキーハッシュを取得していました(理由がわからないので、調査する必要がないと判断しました)。これは機能し、文字通りデバッグとリリースのキーハッシュを取得するのに5分かかりました。+1
Chris Cirefice 2015

1
はい、セバスチャン、デバイスに署名済みのAPKをインストールしてAndroidスタジオに接続し、ログの猫を確認する必要があります。または、UIのedittextにハッシュを表示してコピーできます。とにかく、このコードが生成するハッシュは動作します署名されたapk :)
Bassem Wissa

1
keytoolを使用すると、これは本当に簡単であるように、Aの混乱である
Tabish

135

WindowsとMac OS X用の小さなツールを作成しました。キーストアファイルを投入して、ハッシュキーを取得してください。

デフォルトのdebug.keystoreファイルが必要な場合は、デフォルトのエイリアスとパスワードを使用します。それ以外の場合は、独自のキーストアファイルと値を使用します。

チェックして、Windowsバージョンをダウンロードする、Mac OS Xバージョンをダウンロードしてください。 (Dev-Hostがダウンしていることがあります...リンクが壊れている場合は、PMに連絡して修正します)。

皆さんのお役に立てれば幸いです...

2014年12月31日-編集: ホストをAFHに変更。リンクが壊れている場合はお知らせください

2013年11月21日-編集:

ユーザーの要求に応じて、デフォルトのキーストアの場所と[寄付]ボタンを追加しました私があなたを助けたなら、それを自由に使ってください。:)

スクリーンショット スクリーンショット2


1
ベスト。方法。ずっと。寄付ボタンはどこにありますか?
アダムVarhegyi 2013年

1
@ Shahar2k5本当にわからない、もう一度始めて、魅力のように働いた。申し訳ありません
Anearion 2014年

1
魅力的な作品!共有してくれてありがとう:)
Vinayak

1
@Shahar Barsheshetありがとうございます。あなたが正しいです。Devhostドメインからダウンロードされ、問題は発生していません。
MajorGeek

1
keytoolコマンドラインを使用する場合と比較して、なぜツールが異なるSHAキーを提供するのですか?同じキーストアファイルに適用した場合、同じ結果が生成されるはずではありませんか?
2015

64

現在FacebookのAndroidチュートリアルにある手順は、Windowsでは うまく機能しません。それらの例は、keytoolの出力をopensslにパイプする方法を示していますが、Windowsでこれを試行すると、何らかの理由で出力が無効になります。適切に機能させるには、中間ファイルを使用する必要があることがわかりました。これが私のために働いたステップです:

まず、Googleからopenssl for Windowsをダウンロードします。

C:\Users\Me>keytool -exportcert -alias my_key -keystore my.keystore -storepass PASSWORD > mycert.bin

C:\Users\Me>openssl sha1 -binary mycert.bin > sha1.bin

C:\Users\Me>openssl base64 -in sha1.bin -out base64.txt

これらのコマンドを実行すると、有効なハッシュがbase64.txtファイルに保存されます。これをコピーしてFacebookのアプリ設定に貼り付けます。


他のすべてが失敗していた、完璧に動作します。
オリバーディクソン

2
なんというPITAですが、ブライアンは正解です。コマンドは、パスが間違っていたり、パスワードが間違っていたり、パイプが正しく機能していないかどうかに関係なく、ほとんどハッシュを出力します。ハッシュを取得できますが、機能しません。そこで(Windowsの場合)Powershellを捨ててCygwinを試してみましたが、まだ機能しません。debug.keystoreファイルを作業ディレクトリにコピーした後でのみ、ファイルを実行して機能させることができます!!
ボビー

2
つまり、要約すると、Windowsでは、ブライアンの手法を使用してそれを分解するか、cygwinを作業ディレクトリのキーストアファイルと一緒に使用します。openssl sha1 -binary | openssl base64パスワードの入力を求められない場合は、キーストアファイルが正しく見つかりませんでした。
ボビー

私には完璧に働きました。すばらしい答えです。
Ron

間違ったパスワードのケースでハッシュを取得したくない場合は、openSSLを続行する前にmycert.binを確認してください。そうしないと、間違ったパスワードエラーテキストをハッシュ化することになります:)
Vaiden

50

これはFacebookの公式ページで与えられているものです:

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

このコマンドを断片に分割しましょう。

  1. を探し"keytool.exe"ます。C:ドライブで検索できます。"java jdk"またはで見つけることができます"java jre"。複数のバージョンをインストールしている場合は、いずれかを選択します。

  2. CMDプロンプトを開き、上記のディレクトリに移動します"keytool.exe"

    "exe`"をクリップして、上記のコマンドをFacebookページに貼り付けます。

  3. これを入力すると、OpenSSLが入出力コマンドとして認識されないというエラーが発生します。解決策:OpenSSLから「Openssl」をダウンロードします(64ビットマシンを使用している場合は、openssl-0.9.8e X64をダウンロードする必要があります)。それをどこかに抽出して保存します...私はそれをC:ドライブのOpenSSlフォルダーに保存しました

  4. 上記のコマンドで、OpenSSLのエラーが発生したopensslを、パイプ "|"の後の両方の場所で "C:\ OpenSSL \ bin \ openssl"に置き換えます。

  5. パスワードの入力を求められたら、と入力しandroidます。

そして、あなたはあなたのハッシュキーを取得します。詳細な手順については、Facebookページを再度参照してください。


32

このコードをonCreateアクティビティに追加すると、logCatのKeyHashタグの下にハッシュが出力されます

try {
    PackageInfo info = getPackageManager().getPackageInfo(
                           getPackageName(),
                           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) {

}

アカウントに複数のハッシュキーを追加できるため、デバッグで実行している場合は、リリースモードでもう一度実行することを忘れないでください


素晴らしい解決策、私は実行可能な署名されていないバージョンがあるべきではないでしょうか?署名されていないバージョンは、どのデバイスにもインストールできません。これらのデバッグバージョンは、デバッグキーストアで署名されています:)
benleung

26

Androidキーハッシュコードを取得するには、次の手順に従います。

  1. Windows用のOpenSSLをダウンロード ここ
  2. Cドライブに解凍します
  3. CMDプロンプトを開く
  4. タイプ cd C:\Program Files\Java\jdk1.6.0_26\bin
  5. 次にkeytool -export -alias myAlias -keystore C:\Users\、ユーザー名のみを入力します\.android\myKeyStore | C:\openssl-0.9.8k_WIN32\bin\openssl sha1 -binary | C:\openssl-0.9.8k_WIN32\bin\openssl enc -a -e
  6. できた

2
すばらしい答えです。どうもありがとうございました。
Palani Kumar

1
これはデバッグキー用ですか、それともリリースキー用ですか?
IgorGanapolsky

@IgorGanapolskyのパスの代わりにmyKeyStore、リリースキーのパスを指定します。上記のコードはデバッグキー用です
Pallavi

17

私が見つけた最も簡単な解決策はこれです:

  • ログキャットを開く
  • Android SDKを使用してFacebookにアクセスしてみてください
  • ログで次のような行を探します。

    04-24 01:14:08.605: I/System.out(31395): invalid_key:Android key mismatch. 
    Your key "abcdefgHIJKLMN+OPqrstuvwzyz" does not match the allowed keys specified in your
    application settings. Check your application settings at 
    http://www.facebook.com/developers
  • 「abcdefgHIJKLMN + OPqrstuvwzyz」をコピーして、Facebook Android Key Hash領域に貼り付けます。


これは最もシンプルで最も効果的な方法です。opensslを使用せずにログから取得するだけです。
Luca C.

これが私にとって唯一有効な解決策です。私はあなたのようにログを見ませんが、ログでこれを見てKeyHash: XWwXXXXX/5xxxxxxxxxxx=助けてくれました!
Khang Dinh Hoang

14

SHA-1キーからキーハッシュを取得できます。PlayストアからSHA-1(Signed APK)キーを取得する必要があるのは非常に簡単で、以下の画像を確認してください。ここに画像の説明を入力してください

次に、そのSHA-1キーをコピーして、このWebサイトhttp://tomeko.netに貼り付けます。以下の画像も確認して、キーハッシュを取得します。

ここに画像の説明を入力してください


1
ありがとう。OpenSSLを使用してキーハッシュを取得しようとしました。1分かかって簡単でした。
グリーンY.

1
どうもありがとう!これはGoogleが私のアプリに署名しているときの解決策でした(私はアップロード証明書/キーストアを使用するだけです)
Harrison

13

この方法でLinux OSWindows OSを実行しました

Linux:

  • opensslをダウンロード
  • オープンターミナル
  • keytool -exportcert -alias **myaliasname** -keystore **/home/comp-1/Desktop/mykeystore.jks** | openssl sha1 -binary | openssl base64

必要に応じて、パスエイリアス名キーストアを変更してください。

端末はキーストアのパスワード要求します。あなたはしなければならないパスワードを入力すると同じのためのキーストア

したがって、最後にリリースハッシュキーを取得します。

ウィンドウズ:

ハッシュキーリリースする 手順

  • Opensslのダウンロード(ここからダウンロード)、64ビット OS 用にダウンロードしました。詳しくは、こちらをご覧ください。
  • ダウンロードしたzipファイルをC:\ドライブのみに抽出します
  • コマンドプロンプトを開く
  • keytool -exportcert -alias **myaliasname** -keystore **"C:\Users\hiren.patel\Desktop\mykeystore.jks"** | "C:\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary | "C:\openssl-0.9.8e_X64\bin\openssl.exe" base64

必要に応じて、パスエイリアス名キーストアを変更してください。

注意:

** **の間にマークした場所に詳細を入力してください。

端末はキーストアのパスワード要求します。あなたはしなければならないパスワードを入力すると同じのためのキーストア

したがって、最後にリリースハッシュキーを取得します。

できた


ここのパスワードは何ですか?
Akash Bisariya 2016

@AkashBisariya、キーストアの作成時に指定したキーストアのパスワード。
Hiren Patel

正常に生成された後、キーはどこにありますか?
Anand Phadke

11
  • ここでWindows用のopenSSLをダウンロードします。ここで64ビットと32ビットを見つけることができます。

  • ダウンロードしたファイルを抽出する

  • Cドライブにフォルダ名openSSLを作成する
  • 抽出したすべてのアイテムをopenSSLフォルダー(bin、include、lib、openssl.cnf)にコピーします。
  • Androidデバッグキーストアを取得します。デフォルトの場所は

C:\ Users \ username \ .android \ debug.keystore

  • コマンドプロンプトを取得して、このコードを貼り付けます

keytool -exportcert -alias androiddebugkey -keystore C:\ Users \ username.android \ debug.keystore | "C:\ openSSL \ bin \ openssl" sha1 -binary | 「C:\ openSSL \ bin \ openssl」base64

  • Enterキーを押すと、28桁のキーコードが表示されます

いいえ、それはパスワードを要求します。タイピングandroidは24桁のハッシュをa与え、タイピングは28桁のハッシュを与えます。なぜだかわかりません!
sud007 2016

悪いリンク!
キーツール

6

Androidサイトで説明されている手順のように、Androidの署名付きアプリのキーツールでキーストアを作成する必要があります。その後、cygwinをインストールしてから、Googleコードからopensslをインストールし、次のコマンドを実行するだけでハッシュを取得できます。 androidのキーを作成し、作成したFacebookアプリケーションにそのハッシュキーを挿入します。次に、Androidアプリケーションを介してFacebookアプリケーションにアクセスして、ウォールを投稿できます( "publish_stream")がその例です。

$ keytool -exportcert -alias alias_name -keystore sample_keystore.keystore | openssl sha1 -binary | openssl base64

上記のコマンドをcygwinから実行する必要があります。


6

openSSLをダウンロードする->インストールする->通常はC:\ OpenSSLにインストールする

次に、cmdを開いて、

cd../../Program Files (Enter)

java (Enter)

dir (Enter)

cd jdk1.6.0_17 (varies with jdk versions) (Enter)

jdkバージョンを確認するには、C:/ program files / java / jdk_versionに移動します

cd bin (enter)

keytool -exportcert -alias androiddebugkey -keystore C:Users\Shalini\.android\debug.keystore | "C:\OpenSSL\bin\openssl sha1 -binary | "C:\OpenSSL\bin\openssl base64 (Enter)

それはアンドロイドであるパスワードを要求します。


6
  1. メインアクティビティファイルを開いて、下記の関数を作成するだけです。

         try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "your.application.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 (PackageManager.NameNotFoundException e) {
    
    } catch (NoSuchAlgorithmException e) {
     }

1.1アプリケーションを実行します。これにより、アプリケーションのハッシュキーが生成されます。

  1. 次に、log catを開き、「KeyHash」で検索して、ハッシュキーをコピーします。

  2. ハッシュキーを生成すると、この関数を削除できます。


5

1)アプリケーションに署名するためのキーを作成し、エイリアスを覚えておきます。

2)OpenSSLをインストールします。

3)OpenSSLのbinフォルダーをパスに配置します。

4)FB-Android-SDK ページの「シングルサインオンのセットアップ」で説明されている手順に従い、ハッシュキーを生成します。正しいエイリアスとキーストアファイル名を入力してください。

5)Facebokでアプリケーションを作成し、[モバイルデバイス]タブでこのハッシュキーを入力します。


5

Facebook開発者サイトの公式ドキュメント:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Add code to print out the key hash
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.facebook.samples.hellofacebook", 
                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) {

    }

@WilliamKinaan:いつでも;):P
Hardik Thaker 2013

@HardikThakerコードを使用したところ、このコマンドでターミナルを使用して取得したものとまったく同じkeytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64キーハッシュが得られますが、キーハッシュが保存されているキーハッシュと一致しません
Shan Xeeshi

4
keytool -exportcert -alias androiddebugkey -keystore       C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64

これは私のために働いた...

手順:

1) Open command line go to - > java Keytool..... for me C:\Program Files\Java\JDK1.7\bin
2) Download OpenSSL from google
3) paste this with changing your paths -
   keytool -exportcert -alias androiddebugkey -keystore C:\Users\pravin\.android\debug.keystore | "H:\OpenSSL\bin\openssl" sha1 -binary | "H:\OpenSSL\bin\openssl" base64 

    ....................   give proper debug.keystore path and openSSL path .. 

4) Finley it may be ask u password .. so give password -> android   ...
5) you will get 28 characters that will be your has key

4

Linuxの場合

ターミナルを開く:

デバッグビルド用

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

「.android」フォルダからdebug.keystoreを見つけてコピーし、デスクトップに貼り付けて、上記のコマンドを実行します

リリースビルド用

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

注:どちらの場合も、パスワードを要求する必要があることを確認してください。パスワードを要求しない場合は、コマンドに問題があることを意味します。


別のエイリアス名で別の値を取得していますが、どの値が正しいかを確認するにはどうすればよいですか?
Javal Nanda 2013

それは両方のエイリアス名でパスワードを要求しますか?
Biraj Zalavadia 2013

yaと入力したパスワードには、ハッシュキーが与えられます。私のアプリは既にPlayストアにあり、ネイティブfbは現在機能していません。とにかく、リリースビルドのために正確なキーハッシュを生成する必要があります。開発者はポストを以下でのonCreate内のコードを含めることが示唆されているが、私はそれがplaystoreの上でアプリを更新せずに動作するようにしたいstackoverflow.com/questions/15021790/...
Javalナンダ

はい、opensslの未亡人に問題があります。あなたはその投稿で指定されたコードで達成することができます。
Biraj Zalavadia 2013

プレイストアで更新せずに実行する場合。1)新しいAndroid Dempアプリを作成します。2)そのコードを作成します。3)アプリストアのアプリと同じキーストアでこの
デモアプリに

4

Androidアプリケーションの場合

このコードは、Facebook統合用のAndroidアプリケーションでハッシュキーを取得するために使用されます。すべてのデバイスをテストしましたが、正常に動作しています。このコードのパッケージ名のみを変更します。

private void facebookHashKey() {

    try {
        PackageInfo info = getPackageManager().getPackageInfo("com.app.helpcove", PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String hashCode  = Base64.encodeToString(md.digest(), Base64.DEFAULT);
            System.out.println("Print the hashKey for Facebook :"+hashCode);
            Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }
}

4

答え同様の問題に私は私のために動作してこれを見つけました:

  • apkname.apkハッシュを知りたいファイルを「Java \ jdk1.7.0_79 \ bin」フォルダにコピーします
  • このコマンドを実行する keytool -list -printcert -jarfile apkname.apk
  • SHA1値をコピーし、このサイトを使用して変換します
  • 変換されたキーハッシュ値を使用します(例:zaHqo1xcaPv6CmvlWnJk3SaNRIQ =

3

最も簡単な解決策:

  1. ハッシュキーを追加しないで、他のすべてを実装します
  2. Facebookログインを押すと、「無効なキーハッシュです。キーハッシュ "xxx"は保存されているキーと一致しません。...」というエラーが表示されます。
  3. Facebookアプリのダッシュボードを開き、ハッシュ "xxx ="(エラーからの "xxx"ハッシュ+ "="記号)を追加します

3

リリースキーのハッシュを生成するには、MacまたはWindowsで次のコマンドを実行して、リリースキーのエイリアスとキーストアへのパスを置き換えます。

Windowsでは、以下を使用します。

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

このコマンドは、28文字の文字列を生成します。それを忘れないでくださいCOPYをしてPASTE自分のFacebookのApp IDのAndroidの設定には、このリリースキーハッシュを。

画像:fbcdn-dragon-a.akamaihd.net/hphotos-ak-xpa1/t39.2178-6/851568_627654437290708_1803108402_n.png

参照元:https : //developers.facebook.com/docs/android/getting-started#release-key-hashおよびhttp://note.taable.com


3

これをkotlinの印刷キーハッシュに使用します

try {
        val info = context.getPackageManager().getPackageInfo(context.packageName,
                PackageManager.GET_SIGNATURES);
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            Log.d("Key hash ", android.util.Base64.encodeToString(md.digest(), android.util.Base64.DEFAULT))
        }
    }catch (e:Exception){

    }

2

Android Studioでも私のものを解決しましたが、アプローチは少し異なります。

Android StudioでSHA-1値を取得する。

  1. Gradleをクリックします
  2. 署名レポートをクリックします
  3. SHA-1をコピー

Android Studioでマークされたパネルをクリックします

  1. SHA-1値は次のようになりますCD:A1:EA:A3:5C:5C:68:FB:FA:0A:6B:E5:5A:72:64:DD:26:8D:44:84

    http://tomeko.net/online_tools/hex_to_base64.phpを開き、SHA1値をbase64に変換します。これはFacebookが生成されたハッシュ「******************** =」を取得し、キーハッシュをFacebookアプリコンソールにコピーするために必要です。

この回答の一部は、ここGithubリンクから取得


2

複雑な方法と簡単方法の2つの方法があります。

メソッド1 :(少し複雑)

まず最初にssl をダウンロードする必要があります。64bitそれに32bit応じて、次を含む名前のファイルをダウンロードしてください。eバージョンのコードの後openssl-0.9.8e_X64.zip OR openssl-0.9.8e_WIN32.zipないとkバージョンコードの後に、

そして、AndroidStudio / jre / binディレクトリに配置します。配置する場所がわからない場合は、次のようにandroid studioショートカットを右クリックして、このディレクトリを見つけることができます。

ここに画像の説明を入力してください

今、あなたは1つの場所で2つの必要なものを管理しましたが、それでもあなたの道を見つける必要があります debug.keystore。これは、常にで見つけることができます"C:\Users\yourusernamehere\.android\debug.keystore"

アプリが既に公開されている場合、または公開しようとしている場合は、デバッグ署名を使用できるよりも開発モードでテストしている場合にのみ、公開署名キーストアを使用してください。

すべてが設定されたら、ハッシュキーを生成するために実行したいコマンドを配置します。 base64 formatます。コマンドは次のようになります。

keytool.exe -exportcert -alias androiddebugkey -keystore "C:\Users\ayyaz talat\.android\debug.keystore" | "D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" sha1 -binary |"D:\Program Files\Android\Android Studio\jre\bin\openssl\bin\openssl.exe" base64

debug.keystore(デフォルトではandroid)のパスワードを入力するように求められます。自分のキーを使用している場合は、パスワードも自分のものになります。すべてが期待どおりに進んだ場合、出力は次のようになります。

ここに画像の説明を入力してください

2番目の方法(それぞれ簡単な方法)

上記のすべての手順を実行したくない場合は、次の方法を使用してhaskeyをログに記録します。

 private void printKeyHash() {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA1");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {
            Log.e("KeyHash:", e.toString());
        } catch (NoSuchAlgorithmException e) {
            Log.e("KeyHash:", e.toString());
        }
    }

出力:

ここに画像の説明を入力してください


1

最善の方法は、次のコードを使用することです。

private void getHashKey(String pkgName)
{
    try
    {
        PackageInfo info = getPackageManager().getPackageInfo(pkgName, PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures)
        {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            String hashKey = Base64.encodeBytes(md.digest());
            _hashKey_et.setText(hashKey);
            Log.i("KeyTool", pkgName + " -> hashKey = " + hashKey);
        }
    }
    catch (NameNotFoundException e)
    {
        e.printStackTrace();
    }
    catch (NoSuchAlgorithmException e)
    {
        e.printStackTrace();
    }
}

しかし、Facebookアプリ用のHashKeyを生成するための簡単なツールがないという事実に私はとても苛立ちました。OpensslとKeytoolで遊んだり、コードを使用して署名からハッシュを取得したりするたびに...

だから私はあなたのためにそれを行う簡単なKeyGenToolを書きました:-> Google PlayのKeyGenTool <-

楽しい :)


1

心に留めておくべき小さな間違いをしました。キーストアを使用している場合は、androiddebugkeyではなくエイリアス名を指定してください...

私は問題を解決しました。デバイスにFacebookがインストールされている場合でも、私のアプリはFacebookログイン統合に関するデータを取得しています。あなたのハッシュキーだけを気にしてください。

下記を参照してください。

C:\Program Files\Java\jdk1.6.0_45\bin>keytool -exportcert -alias here your alias name  -keystore "G:\yourkeystorename.keystore" |"G:\ssl\bin\openssl" sha1 -binary | "G:\ssl\bin\openssl" base64

次にを押すEnterと、パスワードの入力を求められ、Androidではなくキーストアのパスワードを入力します。

涼しい。


0
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import android.os.Bundle;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.pm.Signature;
import android.text.Editable;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

    Button btn;
    EditText et;
    PackageInfo info;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=(Button)findViewById(R.id.button1);
        et=(EditText)findViewById(R.id.editText1);
        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                try {
                    info = getPackageManager().getPackageInfo("com.example.id", PackageManager.GET_SIGNATURES);
                    for (Signature signature : info.signatures) {
                        MessageDigest md;
                        md = MessageDigest.getInstance("SHA");
                        md.update(signature.toByteArray());
                        String something = new String(Base64.encode(md.digest(), 0));
                        //String something = new String(Base64.encodeBytes(md.digest()));
                        et.setText("" + something);
                        Log.e("hash key", something);
                    }
                } catch (NameNotFoundException e1) {
                    Log.e("name not found", e1.toString());
                } catch (NoSuchAlgorithmException e) {
                    Log.e("no such an algorithm", e.toString());
                } catch (Exception e) {
                    Log.e("exception", e.toString());
                }
            }
        });
    }



}

このコードは私にとって有効なハッシュキーを生成しません。@Jamshidの答えは、Mac OSXで動作します。
Loolooii 2015

0

ハッシュキーを取得するKotlinコード

 private fun logHashKey() {
    try {
        val info = getPackageManager().getPackageInfo("your.package.name", PackageManager.GET_SIGNING_CERTIFICATES);
        for (signature in info.signingInfo.signingCertificateHistory) {

            val md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            val something = Base64.getEncoder().encodeToString(md.digest());
            Log.e("hash key", something);
        }
    } catch (e1: PackageManager.NameNotFoundException) {
        Log.e("name not found", e1.toString());
    } catch (e: NoSuchAlgorithmException) {
        Log.e("no such an algorithm", e.toString());
    } catch (e: Exception) {
        Log.e("exception", e.toString());
    }
}

デバッグおよびリリース環境では、ビルド設定に従って変更されるため、キーを生成することを忘れないでください。


0

これを試して :

  • ハッシュキー値を取得する2つの方法

1)コマンドラインを使用してハッシュキーを取得します(公式ドキュメント:https : //developers.facebook.com/docs/android/getting-started

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

または

2)コードを使用してハッシュキーを取得する

  @Override
   protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);

            //Hask Kay generation 
             GetKeyHase();
    }

    private void GetKeyHase() {
            try {
                PackageInfo info = getPackageManager().getPackageInfo("ADD YOUR PACKAGE NAME", PackageManager.GET_SIGNATURES);
                for (Signature signature : info.signatures) {
                    MessageDigest md = (MessageDigest.getInstance("SHA"));
                    md.update(signature.toByteArray());
                    String hashkey_value = new String(Base64.encode(md.digest(), 0));
                    Log.e("hash key", hashkey_value);
                    //check you logcat hash key value
                }
            }catch (Exception e) {
                Log.e("exception", e.toString());
            }
        }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.