web-dev-qa-db-ja.com

署名済みアプリのキーハッシュを見つける

アプリに署名し、デスクトップ上のフォルダーにエクスポートしました。このフォルダー内のappは、アプリ自体とキーストアです。 Facebook開発者ページにコピーできるキーハッシュを見つけるにはどうすればよいですか。私はopensslをインストールしていますが、スタック上の他の多くのスレッドを試したキーハッシュを生成することはできません。

ジェームス

22
James
  1. キーストアファイルの場所を知っておく必要があります。私にとってはC:\Users\Selvin\Desktop\selvin.kp
  2. キーストアのエイリアスを知っている必要があります。私にとってはselvin
  3. Keytoolへのパスを知っている必要があります。 C:\Program Files\Java\jdk1.6.0_22\bin\keytool.exe
  4. Opensslへのパスを知っている必要があります。 C:\OpenSSL-Win32\bin\openssl.exe
  5. キーストアへのパスワードを知っている必要があります。私にとっては*****

次に、呼び出す必要があります。

C:\ Program Files\Java\jdk1.6.0_22\bin\keytool.exe "-exportcert -alias selvin -keystore c:\ users\selvin\desktop\selvin.kp | C:\ OpenSSL-Win32\bin\openssl sha1 -binary | C:\ OpenSSL-Win32\bin\openssl base64

パスとエイリアスを適切なものに置き換えます。

次に表示されるはずです:

キーストアのパスワードを入力してください:

パスワードを入力すると、次のようなものが表示されます:NfhDlIH7XWJzUZRjL+pZySrMX1Q=

[〜#〜]編集済み[〜#〜]NfgDlIG7XWJzUZRUL+bZySrMX1Q= <-は悪いハッシュです。または、キーが同じ衝突をしたほど幸運になった

error:keytool error:Java.lang.Exception:Alias does not exist

ハッシュが機能しない場合:

まず、電話

C:\ Program Files\Java\jdk1.6.0_22\bin\keytool.exe "-exportcert -alias selvin -keystore c:\ users\selvin\desktop\selvin.kp

パスワードを入力してエラーを読む

エイリアスを覚えていない場合はkeytool error: Java.lang.Exception: Alias <selvinn> does not exist selvinnを使用してエラーを表示しました。

すべてのエントリ/エイリアスのリスト:

C:\ Program Files\Java\jdk1.6.0_22\bin\keytool.exe -list -keystore c:\ users\selvin\desktop\selvin.kp

2番目の編集

enter image description here

49
Selvin

まだ苦労している人のために、これらの手順を正しく実行すると確かに機能することがわかりましたが、最初に正しく取得することは非常に難しい場合があります(ハッシュは何らかの理由で切り捨てられます)。すでに述べたこれらの指示のほとんどをまとめたさまざまなバッチファイルを書いたので、そこで問題を除外することはしません。

ただし、ほとんどの人はopensslの段階で落ちます(見つからないか、使い方がわからないか、WindowsパイピングがSHA1エクスポートからbase64変換入力への出力を正しくチェーンしません)。

これを回避するために、おそらく理解しやすいと思われる別の方法を使用できます。基本的に、facebook APIが必要とするのは、APKのフィンガープリントに使用されるSHA1ハッシュのbase64表現(エンコード)です。これを行うには、キーストアをリストするだけです。

"C:\Program Files\Java\JRE6\Bin\keytool.exe" -list -v -keystore "Path-to-your-keystore" -storepass "KeystorePassword" > somefile.txt

明らかに、独自の設定に従ってkeytool実行可能ファイルへのパスを変更し、「Path-to-your-keystore」と「KeystorePassword」をキーストアのパスとパスワードに置き換える必要があります。結果として、現在のフォルダーに「sometext.txt」というファイルが作成され、任意のテキストエディターで開くことができます。テキストファイルには、すべてのキーストアエイリアス 'とそれぞれのMD5およびSHA1ハッシュが16進文字列としてリストされます。

APKの署名に使用されるエイリアスを見つけ、SHA1ハッシュをコピーし、オンラインの16進数からbase64へのコンバーターを使用して、facebookが必要とするbase64エンコード形式に変換します。 「オンラインhexからbase64へのコンバーター」をグーグルで検索して、オンラインコンバーターを見つけることができます。 this one を使用してきました。テキストファイルから文字列をコピーして、指定されたボックスに貼り付けるだけで、各16進バイトを区切るコロンが削除されます。

最後の1つのポイント(やや明らかですが..)は、SHA1:プレフィックスではなく、16進文字列のみをコピーして貼り付けます!

これが誰かを助けることを願っています。それは確かに私のために働く!

21
sriggall

まず、セルビンに感謝したいです!

この答えはSelvinの答えとほとんど同じですが、それを動作させるのにまだ3時間かかりました:P本当の初心者のためのもう少しのチュートリアル

キーストアからhashKeyを取得する方法

  • 最初にGoogleコードからOpenSSLをインストールし、C:\フォルダーに入れます ダウンロードリンク
  • keytoolプログラムの場所の検索(Javaフォルダー)のデフォルト)
  • キーストアの場所を見つける(デバッグのデフォルト値があります)

場所keytool C:\ Program Files(x86)\ Java\jdk1.xxx)\ bin\keytool location openssl C:\ OpenSSL-Win32\bin\OpenSSL location(debug)keystore C:\ Users [usernamepc] .Android\debugキーストア

windowsでcmdを開き(start-> run-> cmd)、keytoolの場所に移動するか、次の文字列をコピーして貼り付けます。ctrl+ vは使用できず、右クリック

cd c:\program files (x86)\Java\jdk1.7.0_01\bin

正しいディレクトリにあるとき、この文字列をcmd行に貼り付けます:

keytool.exe -exportcert -alias androiddebugkey -keystore c:\users\charx\.Android\debug.keystore | C:\OpenSSL-Win32\bin\openssl sha1 -binary | C:\OpenSSL-Win32\bin\openssl base64

「C:\ OpenSSL-Win32\bin\openssl」はopensssl.exeのパスであり、openssl.exeのパスに置き換えます

yourtoの[usernamepc]をPCの名前に変更してください。私の場合はcharxです。また、Java jdk xxxxのディレクトリはバージョンによって異なります。

cmdはハッシュキーを表示する必要があります

私のデバッグファイルのハッシュキーは

h1GdQbgB8b/liCG+acmZWkgIRHA=
14
EvertvdBraak

Eclipseを使用したソリューション(私のような怠け者向け)。

Eclipseで任意のプロジェクトを選択し、エクスポート-Android Application、キーパスなどを入力します。下部の最後のページにMD5:.... SHA1:....が表示されます。

SHA1文字列をコピーして、任意のHEX-Base64オンラインコンバーターに貼り付けます(たとえば、この1つ: http://tomeko.net/online_tools/hex_to_base64.php

おめでとうございます! Facebook Dev Consoleに必要なキーハッシュを取得しました。

9
QuiteSimple

上記のソリューションは何らかの理由で機能しませんでしたが、キーハッシュを正常に生成することができました。署名済みapkのキーハッシュを取得するための10の最も簡単な手順を書いています[apk signed with keystore]

  1. 以下のコードを_activity [start Activity]_にコピーします。このコードはアクティビティに含まれている必要があります。これにより、署名されたapkのアクティビティの開始時に適切なキーハッシュを抽出できます。

    _private void getHashKey() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                getPackageName(), PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.e("MY_KEY_HASH:",
                    Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {
    } catch (NoSuchAlgorithmException e) {
    } }
    _
  2. _AndroidManifest.xml_ファイルには、アプリケーションタグに属性_Android:allowBackup="true"_が必要です。

  3. 署名済みapkをエクスポートし、携帯電話にアプリをインストールしてから、デバッグモードで_usb debugging on_を使用して携帯電話を接続します。

  4. 次に_sdk\platform-tools_に移動します

  5. コマンドプロンプトを開き、_adb devices_と入力して、デバイスが接続されているかどうかを確認します。デバイスがリストにない場合は、次の手順に進む前にその問題を修正してください。

  6. 次に、_adb logcat >"log.txt"_と入力します。 cmd画面はハングしたようになります。パニックしないでください。 logcat全体が_log.txt_に書き込まれているため、完全に正常です。

  7. アプリを実行し、できればgetHashKey()関数が実行されていると考えたら、コマンドプロンプトで_ctrl+c_を押して、ログファイルの書き込みを終了してください。

  8. これで、コマンドプロンプトが再び応答するようになります。 _sdk\platform-tools_ dirに移動すると、ログを含むlog.txtファイルが作成されていることがわかります。

  9. texteditorで開き、_MY_KEY_HASH:_を検索します "-----------あなたのキーハッシュ-------"

  10. これを_FB account_または必要な場所にコピーしてから、_Android:allowBackup="false"_およびgetHashKey()関数が削除された別のビルドを作成します。

これがみんなの助けになることを願っています:)

4

私はこれを心配することはできませんでした.Facebookのsdkが実際に送信しているものを見て、署名されたアプリを一時的なコードでエクスポートしてfacebook error.toString()を表示し、ハッシュキーを探してハッシュキーを探しますFacebookアプリとビンゴ!

3
rich

味方を使用する場合、このコマンドを使用してキーストアエイリアスを検索します

0
Uditha Prasad