首先,我意识到之前有人问过这个问题,我已经阅读了这些帖子并搜索了网络并尝试了示例,但在运行我的应用程序时仍然出现此错误:
09-06 16:09:47.010: W/fb4a(:):BlueServiceQueue(3237): com.facebook.http.protocol.ApiException: remote_app_id 与存储的 id 不匹配
我可以从 Eclipse 运行该应用程序,它工作得很好。我遇到的问题是当我将项目导出到 APK 并将其通过电子邮件发送给测试人员并且他们安装它时不起作用。我正在使用我的 Play 商店密钥库导出它,所以我确定这与 hashkey 有关,但我无法弄清楚这一点,并且非常感谢我能得到的任何建议。
我已经使用 keytool 生成了 hashkey,使用相同的密钥库和别名,我将文件导出为:
keytool.exe -exportcert -alias android_market -keystore E:\Droid Projects\keystore_market.keystore | C:\Java\openssl\bin\openssl sha1 -binary | C:\Java\openssl\bin\openssl base64
我读了所有帖子,说这有时会给出错误的哈希键,所以我还将这段代码放在我的 onCreate 中,以便在 logcat 和屏幕上生成它,然后再次导出 apk:
try {
PackageInfo info = getPackageManager().getPackageInfo(
"com.my.package.name",
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));
Toast.makeText(NoteFBHome.this, Base64.encodeToString(md.digest(), Base64.DEFAULT), Toast.LENGTH_LONG).show();
}
} catch (NameNotFoundException e) {
} catch (NoSuchAlgorithmException e) {
}
在有人问之前,我确实将我的实际包名放在了代码中:) 但这给了我相同的密钥。然后我注意到 Facebook 开发人员控制台说可能需要几分钟才能访问所有服务器,但我现在已经等了几个小时,仍然出现同样的错误。
我使用旧的 Facebook SDK 阅读,您可以修改实际的 Facebook 代码以显示它正在寻找的哈希键,但代码似乎在 3.0 版中发生了更改。
我确定我缺少一些东西,但我想我已经看了这么久了,我只是看不到它。如果有人有任何对他们有用的技巧或其他想法来找出哈希键错误的原因,我将不胜感激。
解决方案:
只是想提供一个更新,我能够解决这个问题,并为任何有类似问题的人提供任何帮助。即使您的字符串错误,keytool 也会提供一个 hashkey。就我而言,这是因为我的密钥库文件的路径不正确。最终让我意识到这是另一篇帖子,表明应该提示我输入密钥库密码,但我从来没有。因此,对于遇到此问题的其他任何人,如果未提示您输入密码,则可能是 keytool 字符串不正确。希望这可以帮助。