Facebook Android生成キーハッシュ


119

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

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

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

キーハッシュを生成したい

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


2
正しいパスワードを使用していますか?
James K. Polk大統領

ターミナルにコマンドを入力すると、パスワードを入力するオプションが表示されません
Scott

最後の2つのパイプなしでkeytoolコマンドのみを入力してみてください。
ジェームズKポーク大統領

6
私はそれを手に入れました、私は時々そのような愚か者です、行全体にコマンドを入力してください、コピーして貼り付けないでください
Scott

回答:


20

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

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

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


うまくいきませんでした。debug.keystoreファイルを削除し、デバッグビルドを作成し、ファイルが戻らない。更新されたそのフォルダ内の他のことに注意してください。
CthulhuJon 2015年

3
私はこれがどのように受け入れられた答えであるか本当に知りませんか?
Enoobong

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

281

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

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

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

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

4)私の場合は.androidフォルダーからファイルdebug.keystore(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)次に、パスワードを入力する必要があります。パスワード= android。

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

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

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

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

openssl sha1 -binary debug.txt> debug_sha.txt

12)openssl binフォルダーにdebug_sha.txt表示されます

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

openssl base64 -in debug_sha.txt> debug_base64.txt

14)openssl binフォルダーにdebug_base64.txt表示されます

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


4
いい答え+1あなたはこれをフォローして、望ましい結果を得ました:)
BBdev

これを取得しています:keytoolエラー:java.io.IOException:キーストアが改ざんされたか、パスワードが間違っていました。正しいパスワードを見つけるにはどうすればよいですか?
DuyguK 2013

これは、何が起こっているのかについて2日間混乱した後、私にはうまくいきました。素晴らしい作品です!
rennoDeniro 2013

4
@Vizzz:キーハッシュを生成するための素晴らしい説明方法。この投稿をありがとう、この投稿が誰かの多くの時間を節約することを願っています。
Emran Hamza 2013

1
すべてのコードを試しましたが、希望する出力が得られませんでした。私はfacebookからコードを試しましたが、1つのコマンドで3つのコマンドすべてが同じですが、3つのコマンドを個別に実行すると、適切なコードが得られ、機能しました。ありがとう。これまでは、Androidアプリのコードのみで正しい結果が得られていましたが、コマンドプロンプトで無効なキーが表示されましたが、これで問題ありません。ありがとうございました
Diljeet

149

更新された回答(コードによる生成)より簡単な方法:

私の経験では、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を使用したKeyhashの生成)

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

    keytool -exportcert -alias androiddebugkey -keystore "C:\ Users \ Anhsirk.android \ debug.keystore" | openssl sha1 -binary | openssl base64

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

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

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

すべてが正常に機能する場合は、以下のハッシュキーが表示されます。

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


これを取得しています:keytoolエラー:java.io.IOException:キーストアが改ざんされたか、パスワードが間違っていました。正しいパスワードを見つけるにはどうすればよいですか?
DuyguK 2013

@DuyguK-キーストアがすでに存在することを意味します。削除してやり直してください。または、指定したパスが間違っている可能性があります
AnhSirk Dasarp 2013

神これは私に何時間もかかりました。どうもありがとうございます!
Yenthe 2013年

新しいメソッド(コードでキーハッシュを取得)がどういうわけかonCreateプロセスの速度を落とすかどうかを尋ねたいと思います。私が知っていることから、署名されたAPKが作成されるとき、キーハッシュは異なります。とにかくコードをありがとう!:)
marson

より簡単な方法は、エミュレーターがなくても実際のAndroidデバイスで機能しますか?

24

ハッシュキーを生成する最も簡単な方法。

要件: SHA1キー

キーストアファイルから2つの方法でSHA1キーを取得できます

1)キーストアファイルを見つけて、その場所でコマンドプロンプトを開き、下記のコマンドを使用します

keytool -list -v -keystore {keystore_name} -alias {alias_name}

パスワードを入力すると、md5、sha1、sha256キーが返されます。

または

2)signingReportを実行する

下の画像を参照してください。

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

ファイルを実行すると、必要なsha1キーを含む出力が生成されます。

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

必要なSHA1キーを取得した後

その後に移動します

http://tomeko.net/online_tools/hex_to_base64.php

そしてあなたのsha1キーを貼り付けます

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

そして最後に、facebookに適用するために使用できるRequired HashKeyを取得します。


2
この回答は、最終的な出力のみを考慮しているため、他の回答よりもはるかに単純です。常に正しい。他の場合では、署名プロセスが正しく構成されていないと、修正方法がわかりません。
hakuna1811

1
チャームのような素晴らしい仕事ありがとうバディ
ディーラジジャイスワル

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をパッケージ名に置き換えます


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

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) {

    }

II。Facebookのキーハッシュリリースを作成する

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

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

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

  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 -binary | C:\ openssl \ bin \ openssl base64。注:D:\ folder \ keystorerelease:はキーストアリリースへのパスです

  7. キーストアのパスワードを入力:これは、キーストアの登録をリリースするときのパスワードです。

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

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


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

9

この問題に対する最も簡単な解決策:

この問題は2か月前から発生しています。私のキーハッシュは9まで積み上げられています。今日、私は最終的に簡単な解決策を見つけました:

ステップ1:

スマートフォンのFacebook開発者ページからダウンロードしたFacebook SDKをインストールします。通常のFacebookアプリをインストールしないでください。Facebookにログインできることを確認してください。次にログアウトします。

ステップ2:

プレイストアにアップロードするときのように、最終リリースキーを含むAPKをAPKとしてエクスポートします。

ステップ3:

USBケーブルまたはUSBスティックを介してAPKファイルを携帯電話に配置します。

ステップ4:

ファイルマネージャーを使用してアプリをインストールします。

ステップ5:

アプリを起動し、Facebookでログインしてみます。ダイアログが開き、次のように通知されます:「キーYOURHASHKEYがFacebook開発者コンソールで見つかりませんでした」

ステップ6:

キーを書き留めます。

ステップ7:

Facebookのデベロッパーコンソールに入れて保存します。これで完了です。以前に使用したキーストアで公開されたアプリをダウンロードする人はだれでも、Facebookにログインできます。

楽しい


ただ注意:ログからコピーされたキーの後に '='を置く必要があります
akshay7692

7

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


1
こんにちは、アプリケーションのキーストアを使用してキーハッシュを生成しようとしましたが、アプリケーションから何かを共有しようとすると、Facebookログイン用にアプリケーションが正しく設定されていないというエラーが表示されます。しかし、debug.keystoreで生成されたキーハッシュを試すと、機能します。これについて私を助けてくれませんか?
KunalK 2013


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. あなたのサインコードがTextView 6 Wuoliaに設定される2行のコメントを外してください、あなたはあなたのHASHを持っています、あなたの電話にアプリをインストールしてください!!! ハッシュキーをチェックしてください!
  6. 表示されたら、作成したFacebookアプリに移動して、[キーハッシュ]に追加します。
  7. パッケージ名は、[キーハッシュ]のFacebook [パッケージ名]と同じである必要があります。
  8. ごきげんよう :)

5

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

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

4

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

1)opensslをダウンロード

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

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

4)私の場合は.androidフォルダーからファイルdebug.keystore(C:\ Users \ SYSTEM.android)をコピーし、私の場合は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(sing apk alias name enter here like my sign apk alian name is abcd)-keystore "signed apk generated keystore apth enter here" | 「openssl binフォルダーパスをここに入力してください」sha1-バイナリ| 「openssl binフォルダーパスをここに入力してください」base64

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

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


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 -binary | 「C:\ openssl \ bin \ openssl.exe」base64

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

  1. たとえば、パスワードの入力を求められます

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

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

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

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

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


しかし、パスワードを尋ねると、署名されたキーストアのパスワードも与えられ、それからchines laungaugeが表示されます
Harsha

openssl \ binとjava ... \ binのパスが正しく設定されていることを確認してください
KawaiKx

3

デバッグハッシュキーを生成する

  public String hashkey(Context context) {
        String keyhash = "";
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo(context.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));
                keyhash = Base64.encodeToString(md.digest(), Base64.DEFAULT);
            }
        } catch (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }
        return keyhash;
    }

リリースハッシュキーの生成

 keytool -exportcert -alias specialbridge -keystore /home/shilpi/newproject/specialBridge/SpecialBridgeAndroid/keystore/specialbridge.jks | openssl sha1 -binary | openssl base64

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バージョンのリンクです。

リンク


これは、Adobe AIRアプリ開発者(FlashまたはApache Flex)にとって素晴らしい情報です。そしてFacebook SSOの「クラス名」は次のようになりますAppEntry
Alexander Farber '11年

2

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

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

1

私はここでいくつかの解決策を使用して要求されたタスクを実行できましたが、私は愚かな少年だと思っていました...これを行う小さなJavaコードを記述してJarにパックしないでください。 ..

Jar をダウンロードするためリンク

Windows 8で動作します...他のOSを試しませんでした。


1
私が理解していないのは、それをすべて学び、これをスケッチするのに数時間かかった場合、大企業の誰もが私たちから尋ねた情報を取得する簡単な方法を私たちに提供していないのです。 ???
TacB0sS 2013年

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()を呼び出して、署名付きビルドをインストールし、署名付きビルドを実行して、ダイアログでハッシュキーを取得し、メモして、facebook devアカウントで更新し、その関数にコメントし、別の関数を作成します署名済みAPK **


1

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

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


0

私にとって唯一有効なのは、パスワードを使用することですandroid。なぜそれがそこにあるガイドで言及されていないのですか?


0

ログの印刷キーハッシュにこれを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){

    }
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.