我正在使用以下命令为安卓版Facebook应用控制台生成密钥哈希:
.\keytool.exe -exportcert -alias app_android -keystore release.keystore | openssl sha1 -binary | openssl base64
根据Facebook开发者SDK帮助文档所述,以及开发者控制台显示,密钥散列值应为28个字符,但是keytool生成的密钥散列值为32个字符。Java版本:jdk1.8.0_31 操作系统:Windows 7
生成用于android的密钥散列值。
编辑:
根据@Shreyash-mashru的建议,我使用了以下代码获取密钥散列值。
try {
PackageInfo info = getPackageManager().getPackageInfo(
"my.package.name",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (PackageManager.NameNotFoundException e) {
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());
} catch (NoSuchAlgorithmException e) {
Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());
}
不过,如果有人能够帮我理解为什么命令行工具生成的密钥散列长度是32个字符而不是28个字符,那就太好了...