23

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

ジェームズ

4

7 に答える 7

49
  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=

EDITED : NfgDlIG7XWJzUZRUL+bZySrMX1Q=<- は不正なハッシュです。または、キーが次のように衝突したほど幸運でした

エラー:keytool エラー: java.lang.Exception: エイリアスが存在しません

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

まず、電話

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 existselvinn を使用してエラーを表示しました。

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

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

2回目の編集

ここに画像の説明を入力

于 2011-04-27T13:52:06.983 に答える
22

まだ苦労している人のために、これらの手順を正しく実行すると確実に機能することがわかりましたが、最初は正しく行うのが非常に難しい場合があります。実際、エイリアスを処理するときに指紋の base64 変換が機能しないことがあります。 (何らかの理由でハッシュが切り捨てられます)。既に述べたこれらの手順のほとんどを一緒にプルするさまざまなバッチ ファイルを作成したので、そこに問題がある可能性を排除しません。

ただし、基本的にほとんどの人は 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 to base64 コンバーター」をグーグルで検索すると、オンライン コンバーターを見つけることができます。テキストファイルから提供されたボックスに文字列をコピーして貼り付けるだけで、各16バイトを区切るコロンが削除されるため、私はこれを使用しています。

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

これが誰かに役立つことを願っています。それは確かに私のために働きます!

于 2012-09-05T10:31:35.017 に答える
14

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

この答えはSelvinの答えとほとんど同じですが、それでも機能するまでに3時間かかりました:Pなので、実際の初心者向けのチュートリアルがもう少しあります。

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

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

location 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のパスに置き換えます。

私の場合はcharxであることがわかるように、yourの[usernamepc]をPCの名前に変更してください。また、javajdkxxxxのディレクトリはバージョンによって異なります。

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

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

h1GdQbgB8b/liCG+acmZWkgIRHA=
于 2012-01-19T08:58:34.340 に答える
4

上記の解決策は何らかの理由でうまくいきませんでしたが、キーハッシュを正常に生成できました。署名済み apk [キーストアで署名された apk] のキーハッシュを取得するための 10 の最も簡単な手順を書いています。

  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. ファイルのapplicationタグ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と、ログを含む log.txt ファイルが作成されていることがわかります。

  9. それを a で開き、 「----------あなたのキーハッシュ-------」texteditorを検索します。MY_KEY_HASH:

  10. FB accountこれを必要な場所にコピーしてから、 android:allowBackup="false"andgetHashKey()関数が削除された別のビルドを作成します。

これがみんなに役立つことを願っています:)

于 2014-07-26T17:47:43.020 に答える
3

私はこれらすべてに煩わされることはありませんでした。署名されたアプリを一時コードでエクスポートすることで、Facebook SDK が実際に送信しているものを確認し、Authorize で facebook error.toString() を表示します。これにより、探しているハッシュ キーが得られます。 Facebookアプリとビンゴ!

于 2012-07-10T20:35:36.463 に答える
0

味方を使用する場合は、このコマンドを使用してキーストアの味方を見つけます

keytool -list -v -keystore keystore.jks | findstr "エイリアスの作成"

于 2017-10-17T14:19:09.430 に答える