123

Facebook 統合で Android アプリを作成しようとして、キー ハッシュ ファイルを生成する必要があるドキュメントの部分にたどり着きました。次のコードを実行するように指定されています。

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

端末でこれを実行すると、キーストアが改ざんされたか、パスワードが正しくないというエラーが表示されます。

キーハッシュを生成したいだけです

誰かが私を正しい方向に向けることができますか?

4

21 に答える 21

285

キーハッシュを生成するには、いくつかの簡単な手順に従う必要があります。

1)ここからOpensslをダウンロードします。

2)Cドライブにopensslフォルダを作成します

3) Cドライブに作成されたこのopensslフォルダーにZipファイルを抽出します。

4)ファイルdebug.keystoreを私の場合は.androidフォルダー(C:\ Users \ SYSTEM.android)からコピーし、私の場合はJDK binフォルダー(C:\ Program Files \ Java \ jdk1.6.0_05 \ bin)に貼り付けます。

5)コマンドプロンプトを開き、私の場合はJDK Binフォルダーのパス(C:\ Program Files \ Java \ jdk1.6.0_05 \ bin)を指定します。

6)次のコードをコピーして、Enterキーを押します

keytool -exportcert -alias androiddebugkey -keystore debug.keystore> c:\ openssl \ bin \ debug.txt

7)ここで、パスワード、Password=androidを入力する必要があります。

8)openssl Binフォルダーに表示されている場合は、 debug.txtという名前のファイルを取得します。

9)これで、コマンドプロンプトを再起動するか、既存のコマンドプロンプトを操作できます

10)Cドライブに戻り、opensslBinフォルダーのパスを指定します

11)次のコードをコピーして貼り付けます

openssl sha1 -binary debug.txt> debug_sha.txt

12) opensslbinフォルダーにdebug_sha.txtがあります

13)もう一度次のコードをコピーして貼り付けます

openssl base64 -in debug_sha.txt> debug_base64.txt

14) opensslbinフォルダーにdebug_base64.txtがあります

15)debug_base64.txtファイルを開きます。これがキーハッシュです。

于 2012-09-13T11:35:04.487 に答える
149

UPDATED ANSWER(コードによる生成)より簡単な方法:

私の経験では、openssl は常に面倒なので、facebook で提案された 2 番目の方法を試しました。そして、それは素晴らしいです。これは、ハッシュ キーを取得するための最良の方法です。

2 番目のオプションは、Facebook に送信されたキー ハッシュを出力し、その値を使用することです。メイン アクティビティの onCreate() メソッドに次の変更を加えます。

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

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

        }
        ...other operations

}//end of onCreate

com.facebook.samples.loginhowto を独自のパッケージ名 (Manifest.xml 内のパッケージ名) に置き換えます。

公式リンク - https://developers.facebook.com/docs/android/login-with-facebook/ (ページの下部を参照)

OLD ANSWER ( openssl を使用したキーハッシュの生成)

  1. 署名を生成するには、PC に openssl をインストールする必要があります。ここからopensslをダウンロードしていない場合
  2. C: で、opensslフォルダを作成
  3. ダウンロードした openssl zip ファイルの内容をドライブopenssl内のフォルダーに抽出しますC:
  4. コマンドプロンプトを開く
  5. コマンドプロンプトbinで of openssl ieに移動C:\openssl\bin
  6. 次のコマンドを実行してキーハッシュを生成します。ハッシュキーの生成中に、パスワードを要求する必要があります。

    keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Anhsirk.android\debug.keystore" | openssl sha1 -バイナリ | openssl base64

注:上記のコードでは、パスをユーザーに与える必要があることに注意してください(つまり、私の場合は C:\Users\Anhsirk です。ユーザーアカウント用にこれを変更するだけです。

パスワードをアンドロイドとして与える

. パスワードを要求しない場合は、キーストア パスが正しくありません。

すべてがうまくいけば、以下のハッシュキーが得られるはずです。

ここに画像の説明を入力

于 2012-11-21T07:49:13.297 に答える
20

〜/ .android / debug.keystore(LinuxおよびMac OS Xの場合)の下にあるデバッグ証明書を削除します。ディレクトリは、Windowsでは%USERHOME%/。androidのようなものです。

Eclipseプラグインは、次にデバッグパッケージをビルドしようとしたときに、新しい証明書を生成する必要があります。

それがうまくいくかどうか教えてください。

于 2011-03-15T00:02:12.537 に答える
14

次のコードを追加して適切なキー ハッシュをトーストすることにより、アプリ自体から適切なキーを取得できます (Facebook SDK 3.0 以降の場合、これは機能します)。

try {
            PackageInfo info = getPackageManager().getPackageInfo("com.package.mypackage",         PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
                Log.e("MY KEY HASH:", sign);
                Toast.makeText(getApplicationContext(),sign,         Toast.LENGTH_LONG).show();
            }
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}

com.package.mypackage をパッケージ名に置き換えます

于 2013-08-12T13:25:05.783 に答える
12

I. Facebook のキー ハッシュ デバッグを作成する

Facebook のキー ハッシュを出力するコードを追加します。

    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "com.google.shoppingvn", PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.i("KeyHash:",
                    Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

Ⅱ.Facebook のキー ハッシュ リリースを作成する

  1. openssl-0.9.8e_X64 をダウンロード

  2. Cドライブにopensslフォルダを作る

  3. Zipファイルをopensslフォルダーに抽出します

  4. 開始 -> 実行: cmd (Enter キーを押します)

  5. (プレス) cd C:\Program Files\Java\jdk1.6.0_45\bin. 注: C:\Program Files\Java\jdk1.6.0_45\bin: は、コンピューターの jdk フォルダーへのパスです。

  6. (押す) keytool -exportcert -alias gci -keystore D:\folder\keystorerelease | C:\openssl\bin\openssl sha1 -バイナリ | C:\openssl\bin\openssl base64. 注: D:\folder\keystorerelease: はキーストアリリースへのパスです

  7. Enter keystore password: これは、keystorerelease を登録するときのパスワードです。

    次に、キーハッシュを取得します: jDehABCDIQEDWAYz5Ow4sjsxLSw=

  8. フェイスブックにログイン。アプリの管理へのアクセス。developers.facebook.com でキー ハッシュをアプリに貼り付けます

于 2013-09-06T03:50:36.910 に答える
7

リリースする場合は、debug.keystore ではなく、アプリのエクスポートに使用したキーストアを使用してください。

于 2012-04-20T07:39:54.213 に答える
6

やっと :)

ここに私の話:

  1. レイアウトを設定した後、このコードをメイン アクティビティに追加します。

    try { 
      PackageInfo info = getPackageManager().getPackageInfo("PROJECTNAME", PackageManager.GET_SIGNATURES);
      for (Signature signature : info.signatures) {
          MessageDigest md = MessageDigest.getInstance("SHA");
          md.update(signature.toByteArray());
          String sign=Base64.encodeToString(md.digest(), Base64.DEFAULT);
          Log.e("MY KEY HASH:", sign);
          //textInstructionsOrLink = (TextView)findViewById(R.id.textstring);
          //textInstructionsOrLink.setText(sign);
          Toast.makeText(getApplicationContext(),sign, Toast.LENGTH_LONG).show();
      }
    } catch (NameNotFoundException e) {
        Log.d("nope","nope");
    } catch (NoSuchAlgorithmException e) {
    }
    
  2. PROJECTNAME をパッケージ名に変更してください。

  3. アプリに署名します (Android Tools->Export Signed Application)。
  4. 2 オプションからコードを貼り付けるメイン アクティビティで、レイアウトに ID textstring で TextView を作成します。
  5. 2行のコメントを外して、署名コードがTextView 6 Wuoliaに設定されるようにします.HASHがあり、電話にアプリをインストールしてください!!! ハッシュキーを確認してください!
  6. 表示されたら、作成したFacebookアプリに移動し、[キーハッシュ]に追加します
  7. パッケージ名は、[キー ハッシュ] の下の facebook [パッケージ名] と同じにする必要があることに注意してください。
  8. 良い1日を :)
于 2014-02-03T21:39:54.207 に答える
6

デバッグ証明書のパスワードは Android であり、Android ではありません

于 2011-07-03T18:27:41.637 に答える
5

Facebook用に生成する1行のソリューション

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
于 2016-11-03T13:33:15.010 に答える
4

リリース キー ハッシュを生成するには、いくつかの簡単な手順に従う必要があります。

1) Openssl をダウンロード

2) Cドライブにopensslフォルダを作る

3) C ドライブに作成されたこの openssl フォルダーに Zip ファイルを抽出します。

4) 私の場合は .android フォルダー (C:\Users\SYSTEM.android) からファイル debug.keystore をコピーし、私の場合は JDK bin フォルダー (C:\Program Files\Java\jdk1.6.0_05\bin) に貼り付けます。

5) コマンド プロンプトを開き、私の場合は JDK Bin フォルダーのパスを指定します (C:\Program Files\Java\jdk1.7.0_40\bin)。

6) 次のコードをコピーして Enter キーを押します

keytool -exportcert -alias abcd-keystore D:\Projects\MyAppFolder\keystore.txt | C:\openssl\bin\openssl sha1 - バイナリ | C:\openssl\bin\openssl base64 ex - keytool -exportcert -alias (署名 apk エイリアス名が abcd のように、あなたの歌う apk エイリアス名をここに入力します)-keystore "署名された apk 生成されたキーストア apth をここに入力します" | 「openssl bin フォルダー パスをここに入力してください」sha1 - バイナリ | 「openssl bin フォルダーのパスをここに入力してください」base64

7) ここで、パスワードを入力する必要があります。Password = (署名キーストアのパスワードをここに入力してください)

8) リリース アプリのキー ハッシュに使用されるキーストアを取得しました

于 2014-07-03T06:01:43.933 に答える
3

このスレッドは古いものですが、私の経験 (最近 Facebook での作業を開始しました) を共有したいと思います。

  1. 次のリンクから openssl をダウンロードします: https://code.google.com/p/openssl-for-windows/downloads/list
  2. ローカル ドライブ (例: C:\openssl) に解凍します。
  3. Facebook 統合用の開発キーを取得するには、Windows のコマンド ラインから次のコマンドを使用します。

    keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%.android\debug.keystore | "C:\openssl\bin\openssl.exe" sha1 -バイナリ | 「C:\openssl\bin\openssl.exe」base64

注: openssl.exe のパス (この例では「C:\openssl\bin\openssl.exe」) を独自のインストール パスに置き換えてください。

  1. パスワードの入力を求めるプロンプトが表示されます。

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

上記のように、パスワードとして android を入力します。

それでおしまい!28 文字の長さのキーが与えられます。乾杯!

同じ手順を使用して、リリース キーを取得します。コマンドを次のように置き換えて、リリース キー エイリアスを使用します。

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | "openssl.exe のパス" sha1 -binary | openssl base64

于 2015-08-25T18:28:48.840 に答える
2

コマンドの一部としてキーとストアのパスワードを渡してみてください

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -keypass android -storepass android \
| openssl sha1 -binary \
| openssl base64
于 2016-08-10T18:58:31.800 に答える
2

この件に関する素晴らしいブログ投稿

.p12 キーからのキー ハッシュの抽出

  1. ターミナルまたはコマンド ラインを開き、.p12 キーがある場所に移動します。
  2. 「keytool -v -list -keystore mycert.p12 -storetype pkcs12」と入力します。ここで、mycert.p12 は .p12 キーのファイル名です。
  3. キーストアのパスワード (.p12 キーをエクスポートしたときに使用したもの) を入力します。4 . sha1 指紋署名バイト テキストをコピーします。
  4. 「sha1.bin」ファイルを書き込むには、sha1 指紋署名のバイトが必要です。16 進エディタを使用して、コピーしたバイトを貼り付けることができます。その後、ファイルを「sha1.bin」として保存します。
  5. ターミナルを再度開き、「openssl base64 -in sha1.bin -out base64.txt」と入力します。
  6. 結果の「base64.txt」には、Facebook に必要なキー ハッシュが含まれます。

Mac 用の優れたシンプルな 16 進エディタ: HexFiend

OpenSSL は Mac にプリインストールされている必要があります。Windows バージョンのリンクは次のとおりです。

リンク

于 2013-10-03T13:13:44.407 に答える
1

password=android が間違っている場合は、PC のパスワードを入力してください。

そしてkeyHashを生成するには、このリンクを試してくださいここに

于 2016-02-16T04:25:13.590 に答える
1

こんにちは、私の話です。どのように私が署名するかについて、Facebook の鍵を持っています。

まず、最初のクラスでこの 2 つのメソッドをコピーするだけです

    private void getAppKeyHash() {
    try {
        PackageInfo info = getPackageManager().getPackageInfo(
                getPackageName(), 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));
            System.out.println("HASH  " + something);
            showSignedHashKey(something);

        }
    } catch (NameNotFoundException e1) {
        // TODO Auto-generated catch block
        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());
    }
}
public void showSignedHashKey(String hashKey) {

    AlertDialog.Builder adb = new AlertDialog.Builder(this);
    adb.setTitle("Note Signed Hash Key");
    adb.setMessage(hashKey);
    adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {

        }
    });

    adb.show();
}

**署名付きハッシュが必要な場合は、oncreate メソッドから funcation getAppKeyHash() を呼び出してから、署名済みビルドを作成します署名付き APK **

于 2015-11-04T19:15:42.687 に答える