当我即将在Facebook上发布消息时,我在Facebook登录页面上收到以下错误消息。
'Invalid key hash. The key hash ...... does not match any stored key hashes'
我正在使用各种Android设备。
当我使用Galaxy s3时,我没有收到错误。
但是当我使用Galaxy s4时,我收到了错误。
当我使用Nexus 5时,我没有收到错误
但是当我使用Xperia A时,我收到了错误。
为什么会出现这种症状?
我尝试使用以下命令生成密钥哈希。
keytool -exportcert -alias <RELEASE_KEY_ALIAS> -keystore <RELEASE_KEY_PATH> | openssl sha1 -binary | openssl base64
但是显示了同样的错误。我也尝试输入哈希密钥到facebook开发者网站。哈希键位于错误消息中。但它没有用。
我找到了一个解决方案。
当我删除应用程序和Facebook之间的连接时,我可以发布消息。
但我认为删除连接是不寻常的解决方案。 而且,即使我可以使用Galaxy s4发布,我也无法通过使用Xperia A进行发布。 即使我可以使用Xperia A进行发布,我也无法使用Galaxy s4进行发布。
我该如何解决这个问题?如果有人知道答案,请告诉我解决方案。
答案 0 :(得分:0)
您可以使用以下代码生成要上传到Facebook开发者网站的keyhash:
/**
* generates key hash for facebbok
*/
private void GetKeyHash()
{
PackageInfo info;
try
{
info = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures)
{
MessageDigest md;
md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
String keyhash = new String(Base64.encode(md.digest(), 0));
// String something = new String(Base64.encodeBytes(md.digest()));
Log.e("keyhash", "keyhash= " + keyhash);
System.out.println("keyhash= " + keyhash);
}
}
catch (NameNotFoundException e1)
{
Log.e("name not found", e1.toString());
}
catch (NoSuchAlgorithmException e)
{
Log.e("no such an algorithm", e.toString());
}
catch (Exception e)
{
Log.e("exception", e.toString());
}
}
尝试将此代码放在应用的第一个屏幕中。
运行您的应用,然后检查logcat以获取查找调试密钥哈希值。
要获取签名密钥哈希,创建签名APK,在设备中安装并打开应用程序,然后检查该设备的logcat。
在这两种情况下,logcat都会显示如下内容:
04-10 12:07:33.710: E/keyhash(362): keyhash= ncoE5ojihY80FbI23/xEAdSfeS0=
04-10 12:07:33.710: I/System.out(362): keyhash= ncoE5ojihY80FbI23/xEAdSfeS0=
获得这些密钥(调试和签名)后,将它们上传到Facebook开发者网站,然后做你想做的任何事情。
参考link
我希望这可以帮助你或其他人。