繁体   English   中英

Facebook SDK 3.0 Android

[英]Facebook sdk 3.0 android

我已经遍历了developer.facebook.com上针对Android的基本hello world facebook应用程序的教程,以确保我没有犯错,但是我得到了错误“ remote_app_id与存储的ID不匹配”,但确实匹配并且不确定为什么会抛出该错误。 另外,当我运行样本时,我得到了失败的活页夹交易。 现在奇怪的是,如果我在手机上卸载了fb应用程序并强迫用户登录Facebook,则基本的hello world应用程序有效。 我是在做错什么还是这是Facebook SDK问题。 我已经下载并重新安装了所有内容,但仍然遇到相同的问题

另一个可能的错误(发生在我身上)是:在Facebook App Console上设置“密钥哈希”,并使用另一个密钥库对android应用进行签名。

不幸的是,这是由于Facebook入门教程引发了此错误。 它表示android开发人员应在示例中使用默认的android调试密钥,而不是说明应使用与应用程序签名相同的密钥库生成密钥哈希。

我的建议是在您的Facebook控制台上设置两个密钥哈希:

  1. 默认的Android调试键:

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

  1. 您的应用程序发布密钥:

keytool -exportcert -alias yourappreleasekeyalias -keystore〜/。您的/path/release.keystore | openssl sha1 -binary | openssl base64

请记住:您不能发布使用SDK工具生成的调试密钥签名的应用程序。 因此,不可能仅使用通过第一个先前的命令行生成的哈希键来发布应用程序(如facebook教程所建议的那样)。

有关签署您的应用程序的更多信息,请访问签署您的应用程序

尝试

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的解决方案

解决了。

哈希值错误。 这似乎是Windows问题或人为失败。 我用了:

“ keytool.exe的位置” -exportcert-别名别名-keystore“ keystore的位置” | “ openssl.exe的位置” sha1 -binary | “ openssl.exe的位置” base64

并得到错误的哈希值。 无论如何发现了这个帖子

http://p-xr.com/implementing-facebook-into-your-app-invalid-key-with-keytool/

下载并运行密钥生成应用程序,并从logcat中获取哈希值。 这对于调试键非常有用,但是不确定何时将程序发布到野外

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM