2013-02-21 50 views
4

我想使用Facebook登录原住民SessionState的是FB本地登录

我下面http://developers.facebook.com/docs/tutorials/androidsdk/3.0/scrumptious/authenticate/ CLOSED_LOGIN_FAILED。我得到权限警告框,但是当我选择ok时,我得到的SessionState为CLOSED_LOGIN_FAILED。

我也重新检查了App keyHash。是否有任何方法从代码本身获取KeyHash,我的意思是打印keyhash,它在比较时会检查它。

我也经历了很多其他线程,但没有成功,我不知道我要去哪里错了。什么是所有的可能性,以便我可能会收到这个错误。欢迎任何相关答案。

回答

11

而不是生成密钥散列彻底命令行使用下面的代码来获得密钥散列。你需要注意的问题是 1)在Facebook的设置 2)能够在Facebook上的应用程序设置仪表盘的Facebook登录的设置适当的包名 一些其他的事情

try { 
    PackageInfo info = getPackageManager().getPackageInfo(
      "com.example.com.tvishi.fb", 
      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)); 
     } 
} catch (NameNotFoundException e) { 

} catch (NoSuchAlgorithmException e) { 

} 
+0

经过多次尝试,类似的帖子在这里http://stackoverflow.com/questions/14486377/android-facebook-api-exception-remote-app-id-does-not-match-stored-id – daffycricket 2013-03-25 23:46:16

0

https://developers.facebook.com/apps/

你要上市所有你在那里的钥匙。如果你的密钥散列没有在那里列出,那么你将无法登录,FB会拒绝你。

如果您再移动到另一台计算机,则需要再次执行此操作。

1

我刚刚遇到了这个问题,并尝试了上面提到的所有解决方案,其中没有一个解决了问题。就我而言,我一直在我的测试设备手机上发现这个错误(htc my touch)。我注意到,当我尝试通过手机上的浏览器登录Facebook时,它一直给我提供证书错误!所以我终于明白,手机上的日期和时间不正确。修复后,CLOSED_LOGIN_FAILED错误消失。希望在未来帮助别人!