我已经无数次阅读 developer.facebook.com 上的基本 hello world facebook app for android 的教程,以确保我没有犯错,但我收到错误“remote_app_id 与存储的 id 不匹配”,但它匹配但不确定为什么它会抛出该错误。此外,当我运行示例时,我得到一个失败的活页夹事务。现在奇怪的是,如果我卸载手机上的 fb 应用程序并强制用户登录 facebook,那么基本的 hello world 应用程序就可以工作。我做错了什么还是这是一个 facebook sdk 问题。我已经下载并重新安装了所有东西,但仍然遇到同样的问题
3 回答
尝试
try {
PackageInfo info = getPackageManager().getPackageInfo("com.eatapp", PackageManager.GET_SIGNATURES);
for (Signature signature : info.signatures) {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
Log.e("MY KEY HASH:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
在您的主要活动中:-) 这是适用于 Android SDK 3.0 的唯一解决方案
另一个可能的错误(发生在我身上)是:在 Facebook 应用程序控制台设置“密钥哈希”并使用另一个密钥库签署 android 应用程序。
不幸的是,这是因为Facebook 入门教程引发了这个错误。它说 android 开发人员应该在您的示例中使用默认的 android 调试密钥,并且没有说明应该使用您将签署应用程序的相同密钥库生成密钥哈希。
我的建议是在你的 facebook 控制台设置两个 Key Hashes:
- 默认安卓调试键:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -二进制 | openssl base64
- 您的应用程序发布密钥:
keytool -exportcert -alias yourappreleasekeyalias -keystore ~/.your/path/release.keystore | openssl sha1 -二进制 | openssl base64
请记住:您不能发布使用 SDK 工具生成的调试密钥签名的应用程序。因此,不可能仅使用使用前一个命令行生成的哈希键来发布应用程序(如 facebook 教程所建议的那样。
有关签署您的申请的更多信息,请访问签署您的申请。
解决了。
哈希值错误。这似乎是一个窗口问题或人为失败。我用了:
"keytool.exe 的位置" -exportcert -alias alias -keystore "keystore 的位置" | “openssl.exe 的位置” sha1 -binary | “openssl.exe 的位置”base64
并得到了错误的哈希值。反正找到这个帖子
http://p-xr.com/implementing-facebook-into-your-app-invalid-key-with-keytool/
下载并运行密钥生成应用程序并从 logcat 中获取哈希值。这对于调试密钥非常有用,但不确定何时将您的程序发布到野外
希望这可以帮助