web-dev-qa-db-ja.com

Facebook Androidキーハッシュの生成

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

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

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

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

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

115
Scott

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

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

それが機能するかどうか教えてください。

20

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

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

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

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

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)ここで、パスワードを入力する必要があります、パスワード= Android。

8)opensslBinフォルダーにある場合、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ファイルを開くここにキーハッシュがあります。

277
Vijay Arora

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/ (ページの下部を参照)

古い回答(opensslを使用したKeyhashの生成)

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

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

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

パスワードをAndroidとして与えます

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

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

enter image description here

146
AnhSirk Dasarp

適切なキーハッシュをトーストするために次のコードを追加することで、アプリ自体から正しいキーを取得できます(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をパッケージ名に置き換えます

14
tigerden

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. 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 -binary | C:\ openssl\bin\openssl base64。注:D:\ folder\keystorerelease:は、keystorereleaseへのパスです

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

    次に、キーハッシュがあります:jDehABCDIQEDWAYz5Ow4sjsxLSw =

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

12
Anh Duy

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

私はこの問題を2か月間経験しました。私の主要なハッシュは9個まで並んでいます。今日、私はついに簡単な解決策を見つけました。

ステップ1:

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

ステップ2:

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

ステップ3:

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

ステップ4:

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

ステップ5:

アプリを起動して、facebookでログインしてみてください。ダイアログが開き、「facebook開発者コンソールにキーYOURHASHKEYが見つかりませんでした」と表示されます。

ステップ6:

キーを書き留めます。

STEP 7:

Facebook開発者コンソールに保存して保存します。これで完了です。以前に使用したキーストアで公開されたアプリをダウンロードした人は誰でもFacebookにログインできます。

楽しい

9
Sakramento

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

7
trgraglia

やっと :)

ここで私の話:

  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行のコメントを外し、あなたはあなたのハッシュを持っている、あなたの携帯電話にアプリをインストールしてください!!!ハッシュキーを確認してください!
  6. 表示されたら、作成したFacebookアプリに移動して、[キーハッシュ]に追加します
  7. パッケージ名は、facebook [Package Name]の[Key Hashes]と同じにする必要があります。
  8. 良い一日を :)
6
Vasilij

デバッグ証明書のパスワードはAndroidではなくAndroidです

6

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

要件:SHA1 Key

signingReportを実行すると、SHA1キーを見つけることができます。

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

enter image description here

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

enter image description here

次に、goto http://tomeko.net/online_tools/hex_to_base64.php

そしてsha1キーを貼り付けます

enter image description here

最後に、Required HashKeyを取得します。

5
Vicky Salunkhe

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

keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore | openssl sha1 -binary | openssl base64
5
Anudeep Samaiya

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

1)ダウンロード Openssl

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

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

4)私の場合(C:\ Users\SYSTEM.Android)の.Androidフォルダーからファイルdebug.keystoreをコピーし、私の場合(C:\ Program Files\Java\jdk1.6.0_05\bin)のJDK 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のようにここに入力してください)-keystore「署名されたapkが生成したキーストアアプスがここに入力」 「openssl binフォルダーパスはここに入力してください」sha1-バイナリ| 「openssl binフォルダーパスはここに入力してください」base64

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

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

4
Vijay Rajput

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

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

3
Mahbubul Syeed

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

.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バージョンのリンクは次のとおりです。

リンク

2
Thyselius

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

keytool -exportcert -alias androiddebugkey -keystore ~/.Android/debug.keystore -keypass Android -storepass Android \
| openssl sha1 -binary \
| openssl base64
2
Sam Stern

私はここでいくつかの解決策で要求されたタスクを実行することができましたが、愚かな男の子だと思いました...これを行う小さなJavaコードを書いて、ジャー、だから...

A ダウンロードへのリンク ジャー

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

1
TacB0sS

みなさんこんにちは、私の話はどのようにサインされるのかは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 **

あなたのパスワード= Androidが間違っている場合、それは私のためにそれの上にあなたのPCのパスワードを入れてください。

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

1
Arpit Patel

ログにキーハッシュを出力するために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){

    }
0
Prashant Jajal

私のために働く唯一のものは、パスワードAndroidを使用することです。なぜそれがそこのガイドで言及されていないのですか?

0
Remi Sture