【发布时间】:2016-01-25 05:27:22
【问题描述】:
我正在使用以下命令为 Android 的 Facebook 应用程序控制台生成密钥哈希
.\keytool.exe -exportcert -alias app_android -keystore release.keystore | openssl sha1 -binary | openssl base64
正如Facebook developers SDK help所说的那样
根据帮助页面和开发人员控制台,密钥哈希应该是 28 个字符长,但是 keytool 正在生成 32 个字符长的密钥。
Java 版本:jdk1.8.0_31 操作系统:Windows 7
为安卓生成。
编辑
根据@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());
}
但是,如果有人仍然可以帮助我理解为什么命令行工具生成 32 字符长的密钥哈希而不是 28...
【问题讨论】:
-
建议。它易于使用您可以从上面发布的链接中找到的方法,您可以将其散列到您的日志中。并将其复制并粘贴到您的 Facebook 应用程序中。link of that page
-
谢谢@shreyashmashru 会尝试的。但是知道为什么 keytool 会生成 32 个字符而不是 28 个字符吗?
-
感谢您提出这个问题。