web-dev-qa-db-ja.com

AndroidのFacebookキーハッシュを作成する方法?

私はこの過程を全く理解していません。 Java SDKでkeytoolを含むフォルダに移動することができました。私はエラーopensslを取得し続けますが内部または外部コマンドとして認識されませんが。問題は、私がこれを機能させることができたとしても、私は何をし、その後何をしますか?

153
Somk

これがあなたがする必要があることです -

OpenSSlを コード からダウンロードしてください。 C:/にOpenSSLというフォルダを作成し、抽出したコードをここにコピーします。

debug.keystoreファイルのパスを検出します。 uが見つからなかった場合は、C:/で検索し、次の手順のコマンドでPathを使用してください。

keytool.exeのパスを検出してそのdir /コマンドプロンプトに移動し、このコマンドを1行で実行します。

$ keytool -exportcert -alias androiddebugkey -keystore "C:\Documents and Settings\Administrator.Android\debug.keystore" | "C:\OpenSSL\bin\openssl" sha1 -binary |"C:\OpenSSL\bin\openssl" base64

それはパスワードを要求します、それがすべてAndroidです。キーハッシュを取得します

204

LinuxおよびMac用

ターミナルを開く:

デバッグビルド用

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

".Android"フォルダにdebug.keystoreがあります。それをコピーしてデスクトップに貼り付け、上記のコマンドを実行します。

リリースビルド用

keytool -exportcert -alias <aliasName> -keystore <keystoreFilePath> | openssl sha1 -binary | openssl base64

注:どちらの場合もパスワードを要求するようにしてください。パスワードを要求しない場合は、コマンドに問題があることを意味します。 debug.keystoreのパスワードは "Android"で、リリースするにはパスワードを入力する必要があります。あなたキーストアの作成中に設定

143
Biraj Zalavadia

これを試してください。

public static void printHashKey(Context pContext) {
        try {
            PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                String hashKey = new String(Base64.encode(md.digest(), 0));
                Log.i(TAG, "printHashKey() Hash Key: " + hashKey);
            }
        } catch (NoSuchAlgorithmException e) {
            Log.e(TAG, "printHashKey()", e);
        } catch (Exception e) {
            Log.e(TAG, "printHashKey()", e);
        }
    }
69
Maddy

OpenSSL:あなたのオペレーティングシステムがプレインストールされていない場合(例えば、Windowsはプレインストールされていません)インストールする必要があります。インストール方法はOSによって異なります(Windowsの場合はcoder_For_Life22で提供される link を確認してください)。

Windowsを使用している場合は、いじらずに最も簡単な方法は、そのopenssl.exeバイナリをkeytoolパスにコピーすることです。そうしたくない場合は、それをPATH環境変数に追加する必要があります。その後、ドキュメントに記載されているコマンドを実行します。

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

-keystoreの後の引数はデバッグキーストアを指すことに注意してください。この場所はオペレーティングシステムによっても異なります。次のいずれかの場所にあります。

  • Windows Vistaまたは7 - C:\ Users\.Android\debug.keystore
  • Windows XP - C:\ Documents and Settings\.Android\debug.keystore
  • OS XとLinux - 〜/ .Android/debug.keystore

すべてうまくいった場合は、パスワードの入力を求められます。これはデバッグ証明書のAndroidです。パスワードが正しい場合、コンソールはハッシュ(ややランダムな文字と数字)を表示します。

それを持ってそれをfacebookのあなたのアプリの設定の中のAndroid key hashフィールドにコピーしてください。そこにたどり着くには、 developers.facebook.com/apps に移動してアプリを選択し、Edit settingsに移動して下にスクロールします。その後、変更が有効になるまで数分待ちます。

47
user658042

ローカルコンピュータでキーハッシュを生成するには、Androidデバッグキーストアに対してJavaのkeytoolユーティリティ(コンソールのパスにあるはずです)を実行します。これは、デフォルトではあなたの家の.Androidディレクトリにあります。 OS Xでは、以下を実行します。

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

Windowsでは、以下を使用してください -

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.Android\debug.keystore | openssl sha1 -binary | openssl base64

これがあなたを助けることを願っています

Ref - 開発者向けフェイスブックサイト

21
Rakesh

短い解決策もあります。アプリでこれを実行するだけです。

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this));

FB SDKを必要としないもっと長いもの(解決法に基づく はこちら ):

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (Android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

結果は "="で終わります。

14

私のような人のためにここに完全な詳細があります(Windowsの場合)

1。ダウンロード OpenSSl 3番目またはあなたのシステム32bitまたは64bitに基づいて4番目(eと一緒によりうまくいくでしょう)。

2。ダウンロードしたZipファイルをCディレクトリの中に展開します。

3。展開したフォルダをbinまで開き、パスをコピーします。最後にC:\openssl-0.9.8k_X64\bin\opensslのようにします(最後に\ opensslを追加します)。

4。(Jdkのbinフォルダへのパスを取得する方法がわかっている場合は、これを無視してください)。

Android Studioの〜ファイル〜のプロジェクト構造(Ctrl + Alt + Shift + S)を開き、左側のパネルでSDKの場所を選択し、JDKの場所をコピーして/ binを追加します。

したがって、最終的なJDKの場所はC:\Program Files\Android\Android Studio\jre\binのようになります。

あなたは私のように埋め込まれたjdkを使用するかもしれないので、私たちはJdkの位置を取得するためにこのメソッドに従います

enter image description here

今、あなたはOpenSSlの場所とJDKの場所を持っています

5。デバッグキーストアの場所が必要になります。そのためにはC〜> Users〜> YourUserName〜> .Androidにdebug.keystoreというファイル名が必要です。パスの場所をコピーしてください。

C:\Users\Redman\.Android\debug.keystore

6。コマンドを開くプロンプトとタイプコマンド

cd YourJDKLocationFromStep4  

私の場合

 cd "C:\Program Files\Android\Android Studio\jre\bin"

7。は次のコマンドを作成します

keytool -exportcert -alias androiddebugkey -keystore YOURKEYSTORELOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

私の場合、コマンドは次のようになります

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.Android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64

これで、コマンドプロンプトでこのコマンドを入力します。正しいことをした場合は、パスワードの入力を求められます(パスワードはAndroidです)。

Enter keystore password:  Android

つまり、キーハッシュが与えられます。コピーして使用するだけです。

署名付きKeyHashの場合は、次のコマンドを作成します。

keytool -exportcert -alias YOUR_ALIAS_FOR_JKS -keystore YOUR_JKS_LOCATION | YOUROPENSSLLOCATION sha1 -binary | YOUROPENSSLLOCATION base64

あなたのキーストアのパスワードを入力してください、あなたが間違ったパスワードを入力した場合、それは間違ったKeyHashを与えるでしょう

NOTE

何らかの理由でエラーが発生した場合は、そのパスを二重引用符で囲んでください。Windowspower Shellがうまく機能しなかった場合は、git bashを使用しました(またはコマンドプロンプトを使用します)。

keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Redman\.Android\debug.keystore" | "C:\openssl-0.9.8k_X64\bin\openssl" sha1 -binary | "C:\openssl-0.9.8k_X64\bin\openssl" base64
13
Manohar Reddy

Windowsの場合

  1. openコマンドコマンドプロンプトの下に貼り付け

keytool -exportcert -alias androiddebugkey -keystore%HOMEPATH%。アンドロイド\ debug.keystore | openssl sha1 - バイナリ| openssl base64

  1. パスワードを入力してください:Android - > Hit Enter

  2. 生成されたハッシュキーをコピーする - >開発者アカウントでFacebookにログイン

  3. あなたのFacebookアプリ - >設定 - > "キーハッシュ"オプションにハッシュキーを貼り付け - >変更を保存してください。

  4. 今すぐFacebookのログイン/共有などであなたのAndroidアプリをテストします.

9
swiftBoy

それが私が私の手に入れた方法です:

private class SessionStatusCallback implements Session.StatusCallback {
        @Override
        public void call(Session session, SessionState state, Exception exception) {

            if (exception != null) {
                new AlertDialog.Builder(FriendActivity.this)
                        .setTitle(R.string.login_failed_dialog_title)
                        .setMessage(exception.getMessage())
                        .setPositiveButton(R.string.ok_button, null)
                        .show();
            }

そのため、キーなしで入力しようとすると、例外が発生します。 Facebookはこの例外にRIGHTキーを置きました。あなたがする必要があるのはそれをコピーすることだけです。

6
Valikpon

API 26以降、KOTLINのコードを使用してハッシュキーを生成することができます。 Facebook SDKが必要です。

fun generateSSHKey(context: Context){
    try {
        val info = context.packageManager.getPackageInfo(context.packageName, PackageManager.GET_SIGNATURES)
        for (signature in info.signatures) {
            val md = MessageDigest.getInstance("SHA")
            md.update(signature.toByteArray())
            val hashKey = String(Base64.getEncoder().encode(md.digest()))
            Log.i("AppLog", "key:$hashKey=")
        }
    } catch (e: Exception) {
        Log.e("AppLog", "error:", e)
    }

}

enter image description here

6
Hanny

KeyHashを生成するための簡単なvedioチュートリアルリンクここ

OpensslをHEREからダウンロードしてください。

5
Arpit Patel

アプリでこれを実行します。

FacebookSdk.sdkInitialize(getApplicationContext());
Log.d("AppLog", "key:" + FacebookSdk.getApplicationSignature(this)+"=");

またはこれ:

public static void printHashKey(Context context) {
    try {
        final PackageInfo info = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
        for (Android.content.pm.Signature signature : info.signatures) {
            final MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            final String hashKey = new String(Base64.encode(md.digest(), 0));
            Log.i("AppLog", "key:" + hashKey + "=");
        }
    } catch (Exception e) {
        Log.e("AppLog", "error:", e);
    }
}

そしてログを見てください。

結果は "="で終わります。

解決法は ここここ に基づいています。

3

open open sslをダウンロードしてください

次に、パスシステム変数にopenssl\binを追加します。

[マイコンピュータ] - > [プロパティ] - > [詳細設定] - > [詳細設定] - > [システム変数] - > [システム変数]の下にあるパスを見つけ、これを末尾に追加します。; yourFullOpenSSLDir\bin

それではjdk\binフォルダC:\ Program Files\Java\jdk1.8.0_40\binにあるコマンドラインを開き(Windowsではshiftキーを押したまま右クリック - >ここでコマンドラインを開く)、次のコマンドを使用します。

keytool -exportcert -alias keystorealias -keystore C:\yourkeystore\folder\keystore.jks | openssl sha1 -binary | openssl base64

パスワードを入力した後に生成される28桁の番号をコピーします。

3
sagits

ブラウザコンソールで1行のJavaScriptを使用するだけで、16進マップキーをbase64に変換できます。最新のブラウザー(WindowsのF12)でコンソールを開き、コードを貼り付けてSHA-1SHA-256Google PlayがRelease Managment> App signingで提供する16進マップ:

> btoa('a7:77:d9:20:c8:01:dd:fa:2c:3b:db:b2:ef:c5:5a:1d:ae:f7:28:6f'.split(':').map(hc => String.fromCharCode(parseInt(hc, 16))).join(''))
< "p3fZIMgB3fosO9uy78VaHa73KG8="
2
Christos Lytras

あなたは https://console.developers.google.com/projectselector/apis/credentials からすべてのあなたの指紋を得ることができます
そして、このKotlinコードを使用してそれをキーハッシュに変換します。

fun main(args: Array<String>) {
    listOf("<your_production_sha1_fingerprint>",
            "<your_debug1_sha1_fingerprint>",
            "<your_debug2_sha1_fingerprint>")
            .map { it.split(":") }
            .map { it.map { it.toInt(16).toByte() }.toByteArray() }
            .map { String(Base64.getEncoder().encode(it)) }
            .forEach { println(it) }
}
2
Alexmelyon

簡単-> opensslをインストールしないでください-> GIT BASHを使用してください!

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

デフォルトのパスワードは「Android」です

私たちのほとんどはGit Bashをインストールしているので、これが私のお気に入りの方法です。

1
Dmitri R117

https://developers.facebook.com/docs/Android/getting-started/

4.19.0 - 2017年1月25日

Facebook SDK

修正済み

アプリケーションの起動時にFacebook SDKが自動的に初期化されるようになりました。ほとんどの場合、FacebookSDK.sdkInitialize()の手動呼び出しは不要になりました。詳しくは アップグレードガイド をご覧ください。

デバッグ用

try {
    PackageInfo info = getPackageManager().getPackageInfo(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));
    }
} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
} catch (Exception e) {
    e.printStackTrace();
}
1
Ketan Ramani

既にアプリをPlayストアにアップロードしている場合は、次のようにハッシュキーを生成できます。

1)リリース管理に移動 ここ

2)リリース管理->アプリ署名を選択します

3)16進形式のアプリ署名証明書のSHA1キーを確認できます。

4)SHA1を16進形式でコピーし、base64形式に変換します。 this linkを使用して、SHA1:なしで実行できます。

5)Facebook開発者コンソールに移動し、設定にキーを追加します(base 64に変換後)—>基本–>キーハッシュ。

1
SumiSadiq

私は最もシンプルなツールを見つけて何度も使ってきました。それは完璧に機能しています。それをチェックしてください、それは役立ちます。

詳しくは this と答えてください。

1
TapanHP

この答えを試してください

https://stackoverflow.com/a/54513168/9236994

最小限の努力で問題を解決するのに役立ちます。

0
Vicky Salunkhe

私は同じ正確な問題を抱えていました、私はパスワードを要求されていませんでした、そしてそれは私がキーストアファイルへの間違ったパスを持っていたようです。

実際、keytoolが設定したキーストアを見つけられなかった場合、正しいキーストアを使用していないので、作成して間違ったキーを渡します。

一般的な規則として、パスワードの入力を求められていないと、間違ったキーが生成されます。

0

あなたはこれを使用することができます apk

1.first install the app from the Google Play Store
2.install the above apk
3.launch the apk and input the package name of your app
4.then you will get the hash code you want
0
armnotstrong

これは初心者にも役立ちます。

@ coder_For_Life22の回答に詳細を追加するだけです。

この回答が役立つ場合は、投票することを忘れないでください。それは私たちのやる気を引き出します。

このためには、アプリのキーストアファイルとパスワードのパスを既に知っている必要があります

この例では、キーが「c:\ keystorekey\new.jks」に保存されていることを考慮してください

1。このページを開く https://code.google.com/archive/p/openssl-for-windows/downloads

2。 Windows OSごとに32ビットまたは64ビットのZipファイルをダウンロードします。

3。ダウンロードしたファイルを好きな場所に解凍し、パスを覚えておいてください。

4。この例では、ダウンロードフォルダー内のフォルダーを抽出したと見なします。

したがって、ファイルアドレスは「C:\ Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe」になります。

5。キーボードでwindows + rボタンを押します。

6。これにより、実行ボックスが開きます。

7。 cmdと入力して押します Ctrl + Shift + Enter

8。これにより、管理者としてコマンドプロンプトが開きます。

9。ここで、Javaのbinフォルダーに移動します。

Android St​​udioが提供するjreを使用すると、次のようなパスが見つかります。
a。 Androidスタジオを開きます。
b。ファイル->プロジェクト構造
c。左ペインで、「SDK location」をクリックします
d。右側のペインで、「JDKの場所」の下にjreパスがあります。
e。必要なファイル「keytool.exe」がこのフォルダ内にあるため、このパスの最後に「\ bin」を追加します。
この例では、Javaを個別にインストールしており、以下がパスです
"C:\ Program Files\Java\jre-10.0.2\bin"
32ビットJavaをインストールした場合は、
"C:\ Program Files(x86)\ Java\jre-10.0.2\bin"
10。今、上記のパスで次のようにコマンドを実行します:

keytool -exportcert -alias androiddebugkey -keystore "c:\keystorekey\new.jks" | "C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" sha1 -binary |"C:\Users\0\Downloads\openssl-0.9.8e_X64\bin\openssl.exe" base64
  1. パスワードの入力を求められます。キーストアキーの作成時に指定したパスワードを入力してください。

    !!!!!! これはあなたに鍵を与えます

エラー:取得した場合:
---
'keytool'は内部コマンドまたは外部コマンドとして認識されません
---
これは、Javaが別の場所にインストールされていることを意味します。

0
sifr_dot_in