我在Facebook上创建了一个应用程序。我已经正确添加了keyhash,应用程序一切正常,但今天再次尝试运行它时却出现了这个错误。这已经是第二次发生了。以前当我遇到这个错误时,我删除了应用并重新添加它,然后它又开始工作了,当然我不能一遍又一遍这样做。
还有一件事,他在错误中提到的密钥哈希值与我在应用程序中添加的不同,如果我进入应用程序设置,那里的密钥哈希值是正确的。
还有一件事,他在错误中提到的密钥哈希值与我在应用程序中添加的不同,如果我进入应用程序设置,那里的密钥哈希值是正确的。
不需要反复从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开发者网站中删除应用程序,然后再创建一个新的,但请相信我,这确实是你需要做的。openssl-0.9.8e_X64.zip
。openssl-0.9.8k_X64.zip
。keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64
生成新的密钥。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/
这个错误只有一个原因,就是每个开发环境的哈希密钥都不同,这意味着如果您在不同的机器上工作,每台PC/Mac都会生成自己的哈希密钥。
现在的解决方案:
只需两个简单的步骤,您就可以解决此错误,只需在您的Facebook开发者帐户中编写哈希密钥,如附图所示:
第一步:在这里查看哈希密钥注释,然后按照下一步操作 enter image description here
最后一步:在Key Hashes字段中写下复制的哈希密钥。像这样 enter image description here
无需删除或重新配置应用程序。
谢谢。
在搜索了两个小时后,我找到了一些基本的要点。如果你已经按照所有文档进行操作,但仍然发现关键问题,则可以尝试使用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