2012-12-15 218 views
1

我已经浏览了developer.facebook.com上的基本hello world facebook应用无数次的教程,以确保我不会犯错误,但我得到的错误“remote_app_id与存储的id不匹配”但它确实匹配,并不确定它为什么抛出该错误。另外当我运行样本时,我得到一个失败的联编程序事务。现在奇怪的是,如果我卸载我的手机上的FB应用程序,并强制用户登录Facebook的基本Hello World应用程序的作品。我做错了什么或这是一个Facebook的SDK问题。我已经下载并重新安装了一切,但仍然遇到同样的问题Facebook sdk 3.0 android

回答

1

已解决。

散列值错误。这似乎是一个窗户问题或人类终结的失败。 我使用过:

“keytool.exe的位置”-exportcert -alias alias -keystore“keystore的位置” “openssl.exe的位置”sha1 -binary | “openssl.exe的位置”ba​​se64

并且得到了错误的散列值。不管怎么说发现这个职位

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

下载并运行该应用程序keygeneration,得到了哈希值从logcat中的。 这是伟大的调试关键,但不确定释放你的程序的时候了到野外

希望这有助于

+1

如果使用片断变化Log.i( “PXR” 唯一的解决办法,Base64编码.encodeToString(md.digest(),0)); – user1892172

2

另一个可能的错误(这发生在我身上)是:建立一个“密钥散列”在Facebook的应用程序控制台并使用其他密钥库对Android应用程序进行签名。

不幸的是,这是因为Facebook Getting Started Tutorial导致了这个错误。它表示,Android开发者应该在你的例子中使用默认的android调试密钥,并没有解释应该使用相同的密钥库来生成密钥哈希,你将签署你的应用程序。

我recomendation是在你的Facebook控制台设置了两个关键哈希值:

  1. 默认的Android调试键:

密钥工具-exportcert -alias androiddebugkey -keystore〜/ .android/debug.keystore | openssl sha1 -binary | OpenSSL的BASE64

  1. 您的应用程序发布重点:

密钥工具-exportcert -alias yourappreleasekeyalias -keystore〜/。你的/路径/ release.keystore | openssl sha1 -binary | openssl base64

请记住:您无法发布使用SDK工具生成的调试密钥签名的应用程序。因此,仅仅使用使用第一个先前命令行生成的散列键来发布应用程序是不可能的(正如facebook教程所暗示的那样)

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

2

尝试

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