署名済みAPKからキーハッシュを取得する方法はありますか?署名済みのAndroid apkファイルがあり、Facebook SDKのこのAPKのキーハッシュを検索する必要があります。jarsignerなどの方法でこれを実行できますか?
助言がありますか?
Windowsユーザーがopensslからキーを取得する場合、時々注意が必要になる場合があります。私は常にこれを使用して正しい署名を見つけます。このコードをonCreate()に貼り付けて実行します。
// Add code to print out the key hash
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) {
}
更新:
Android studio(2.1.2):
これにより、md5キーとsha1キーを使用してデバッグとリリースの証明書を出力するgradleタスクが実行されます
Linuxでは、次のコマンドを使用してapkからキーハッシュを取得しました。
keytool -list -printcert -jarfile [path_to_your_apk] | grep -Po "(?<=SHA1:) .*" | xxd -r -p | openssl base64
Macユーザー(OS X)の場合、grep -Pサポートがないため
keytool -list -printcert -jarfile ~/Downloads/YOURAPKFILE.apk | grep "SHA1: " | cut -d " " -f 3 | xxd -r -p | openssl base64
Openssaは here からダウンロードできます
次のコマンドを実行して、キーハッシュを生成します。ハッシュキーの生成中に、パスワードを尋ねる必要があります。
keytool -exportcert -alias androiddebugkey -keystore "C:\Users\Anhsirk.Android\debug.keystore" | openssl sha1 -binary | openssl base64
注:上記のコードでは、ユーザーへのパスを指定する必要があることに注意してください(つまり、私の場合はC:\ Users\Anhsirk、ユーザーアカウントでこれを変更するだけです。
パスワードをAndroidとして指定します。パスワードを求めない場合は、キーストアのパスが間違っています。
Facebookアプリを作成したとき。私はAndroidキーストアを使用しました。そのためのハッシュ関数があります。一般的にGoogle APIで使用されます。(手順についてはそこを参照)。それ以外の場合..あなたの基本的にねじ込み。方法はありません。