我在我的应用程序中使用了一个facebook sdk。为此我使用debug.keystore和release keystore生成了密钥哈希。我在我的应用程序的开发者页面中添加了两个关键字。但我仍然得到像
这样的错误com.facebook.http.protocol.ApiException:密钥哈希“LLSiRNj0hXH8BQpUJivI0UJz00Q”与任何存储的密钥哈希都不匹配。
但上面错误消息中给出的keyhash不属于我生成的任何keyhashes。我不明白这个keyhash是如何生成的以及它来自何处。
我还在开发者页面中添加了以下代码生成的keyhash。
错误消息中的keyhash与这3个keyhashes中的任何一个都不匹配(debug keystore,release keystore,keyhash by the code)
代码:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.bloopit.activities",
PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
System.out.println("KeyHash : "+ Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
我只是想知道错误消息中的keyhash来自哪里? 我将keyhash添加到我的开发人员页面,它运行良好,但我不知道它是否是正确的过程。
会导致任何问题吗?
由于 } catch(NameNotFoundException e){ } catch(NoSuchAlgorithmException e){ }
答案 0 :(得分:1)
适用于Linux
打开终端:
用于调试版本
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
注意:确保在两种情况下都必须要求输入密码。如果它没有要求输入密码就意味着命令出错了。