Facebook消息remote_app_id与存储的ID不匹配

时间:2013-09-06 21:26:52

标签: android facebook hash sdk

首先我意识到这个问题之前已经被问到,我已经阅读了这些帖子并搜索了网络并尝试了示例,但在运行我的应用时仍然出现此错误:

  

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

我读了很多帖子,说这有时会给出错误的hashkey所以我也把这个代码放在我的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字符串不正确。希望这会有所帮助。

1 个答案:

答案 0 :(得分:1)

解决方案:

只是想提供一个更新,我能解决这个问题并为遇到类似问题的人提供任何帮助。即使你的字符串错误,keytool也会提供一个hashkey。在我的情况下,这是因为我的密钥库文件的路径不正确。最后让我意识到这是另一个帖子,表明我应该被提示使用密钥库密码,但我从来没有。因此,对于有此问题的其他人,如果未提示您输入密码,则可能是keytool字符串不正确。希望这会有所帮助。