我使用以下命令为Android的Facebook应用控制台生成密钥哈希
.\keytool.exe -exportcert -alias app_android -keystore release.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)
根据帮助页面和开发人员控制台,密钥散列应该是28个字符长,但是keytool生成32个字符的长密钥.
Java版本:jdk1.8.0_31操作系统:Windows 7
为android生成.
编辑
根据@ Shreyash-mashru的建议,我使用以下代码来获取keyhash
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());
}
Run Code Online (Sandbox Code Playgroud)
但是,如果有人仍然可以帮助我理解为什么命令行工具生成32个char长键哈希而不是28 ...