无效的密钥哈希,密钥哈希与任何存储的密钥哈希都不匹配。

9
我在Facebook上创建了一个应用程序。我已经正确添加了keyhash,应用程序一切正常,但今天再次尝试运行它时却出现了这个错误。这已经是第二次发生了。以前当我遇到这个错误时,我删除了应用并重新添加它,然后它又开始工作了,当然我不能一遍又一遍这样做。
还有一件事,他在错误中提到的密钥哈希值与我在应用程序中添加的不同,如果我进入应用程序设置,那里的密钥哈希值是正确的。

1
_ZerO_,这不是一个编程问题。@umerk44:在此问题的我的答案中,在更新之前尝试解决方案。https://dev59.com/y27Xa4cB1Zd3GeqPqHYz。如果那不起作用,请尝试更新中的SOLUTION 1。这两个解决方案都需要使用您的发布密钥。而不是默认的调试密钥。我假设您的应用程序已部署在Google Play上。如果没有,请使用默认的调试密钥。 - Siddharth Lele
9个回答

7

不需要反复从Facebook开发者网站上删除应用程序。 您只需要打开终端(Mac或Linux),然后输入以下命令:

keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

如果你是 Windows 用户,打开命令提示符并输入:

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl
base64

在这之后,你会被要求输入“输入密钥库密码:”,请记住只输入android。现在,在Facebook开发者网站上使用此密钥哈希(注意:此密钥哈希与您在错误中获得的密钥哈希相同)。 大多数人都建议从Facebook开发者网站中删除应用程序,然后再创建一个新的,但请相信我,这确实是你需要做的。

那么你的意思是这只发生在调试时?我已经在我的Facebook设置中添加了调试和发布密钥,但尽管如此,我仍然收到了这条消息。 - Emil
我只是为了调试而遇到了这个问题。你确定从上面的命令中得到的密钥与你在 Facebook 设置中输入的密钥相同吗?而且,密钥也应该与你在错误信息中获取的密钥匹配。@batmaci - Rishabh Chandel

5
请使用以下版本之一:openssl-0.9.8e_X64.zip
请勿使用openssl-0.9.8k_X64.zip
区别在于ke
然后在cmd中使用keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64生成新的密钥。

你的答案对我有用。你能详细解释一下原因吗? - Dnveeraj

4

删除该应用并按照此方法尝试创建新的哈希密钥!


2
将以下代码添加到onCreate()中: *不要忘记更改包名称。
try {
    PackageInfo info = getPackageManager().getPackageInfo(
            "com.yours.package", 
            PackageManager.GET_SIGNATURES);
    for (Signature signature : info.signatures) {
        MessageDigest md = MessageDigest.getInstance("SHA");
        md.update(signature.toByteArray());
        Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
} catch (NameNotFoundException e) {

} catch (NoSuchAlgorithmException e) {

}

来源:https://developers.facebook.com/docs/android/getting-started/

非常好 - 这是唯一一个真正起作用的(cmd生成的密钥对我无效) - galaxigirl

1

您需要再次执行以下步骤:

  1. 删除 Facebook 网站上的应用程序(developers.facebook.com)
  2. 删除 debug.keystore 文件。
  3. 生成新密钥(重新运行您的应用程序)
  4. 在 developers.facebook.com 上创建一个新应用程序并添加新的哈希密钥
  5. 重新运行您的应用程序
  6. 成功!

更多信息请参见下面的链接:

https://developers.facebook.com/docs/android/getting-started/


2
我曾经尝试过这种方法,它对我有效。但是我需要一遍又一遍地重复吗?这不是一个解决方案。 - umerk44
@umerk44 这意味着您在创建哈希密钥时做错了什么,请确保正确操作。祝您好运。 - duggu

0
在我的情况下,我在创建私钥之后更改了包名,因此密钥哈希值是错误/无效的。

0

你好,在我的情况下,问题出在为生产环境生成发布密钥上。将apk发布到Play商店需要你生成发布密钥。 请访问Facebook的链接获取详细信息。


0

这个错误只有一个原因,就是每个开发环境的哈希密钥都不同,这意味着如果您在不同的机器上工作,每台PC/Mac都会生成自己的哈希密钥。

现在的解决方案:

只需两个简单的步骤,您就可以解决此错误,只需在您的Facebook开发者帐户中编写哈希密钥,如附图所示:

第一步:在这里查看哈希密钥注释,然后按照下一步操作 enter image description here

最后一步:在Key Hashes字段中写下复制的哈希密钥。像这样 enter image description here

无需删除或重新配置应用程序。

谢谢。


0

在搜索了两个小时后,我找到了一些基本的要点。如果你已经按照所有文档进行操作,但仍然发现关键问题,则可以尝试使用React Native中的简单方法:

LoginManager.loginWithPermission(["public_profile"]).then(d => console.log(d))

如果显示出现错误,例如密钥不匹配或无效的密钥哈希值等,请尝试以下方法,而不是使用Facebook提供的路径像 ~/.andorid/debug.keystore:

keytool -exportcert -alias androiddebugkey -keystore android/app/debug.keystore | openssl sha1 -binary | openssl base64

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接