2013-07-04 156 views
2

我正在关注本教程“Facebook登陆Flow for Android”(https://developers.facebook.com/docs/howtos/androidsdk/3.0/login-with-facebook/)来创建一个简单的应用程序,其中仅包含一个用于测试Facebook登录的Facebook登录按钮。android facebook登录按钮不起作用

但是,我一直在使用此按钮登录Facebook时遇到问题....我一直在关注本教程中的每一步,并且我已经仔细检查了所有内容 - 它与本教程中的内容完全相同。我看到其他有类似问题的人总是因为错误的调试哈希码。但我已经检查了一百万次,得到了正确的调试哈希码。有人说,如果你想发布一个应用程序,你需要一个发布代码。然而,我并没有发布我的应用程序 - 我只是在Android设备上测试它,所以我想我真的不需要发布代码来做到这一点?

另外,我已经检查过我在Android Manifest中包含了我的Facebook应用程序ID。所以基本上,我所做的一切都严格遵循Facebook开发人员的教程。

我见过一些人建议在JDK 6中使用“keytool”而不是JDK 7.我已经检查过我实际上在JDK 6中使用“keytool”生成了我的调试哈希码。

所以我试了一切,但问题仍然存在!

在这种Android的教程,它建议把这个在你的代码,以便您可以监控logcat的,看看你的当前状态,登录或登出:

private void onSessionStateChange(Session session, SessionState state, Exception exception) { 
    if (state.isOpened()) { 
     Log.i(TAG, "Logged in..."); 
    } else if (state.isClosed()) { 
     Log.i(TAG, "Logged out..."); 
    } 
} 

对我来说,无论怎样很多时候我点击了Facebook登录按钮,我总是在LogCat中看到“退出...”。

另外,有趣的是,我甚至无法使用Facebook Android SDK 3.0.1附带的示例应用程序登录Facebook(例如SessonLoginSample)!!!!!当我点击这些示例应用程序中的登录按钮时,什么都没有发生 - 这意味着我没有成功登录。

我真的希望你们能帮助我解决这个问题。这很奇怪,我没有看到其他人有完全相同的问题(正如我所说的,那些有类似问题的人总是因为不正确的调试代码,但我已经检查了我的,这是100%正确的)。非常感谢!

回答

1

它发生在我身上一次。您可能已在Facebook开发人员设置中添加了导出密钥哈希。 将这些行添加到您的代码中以获取调试密钥哈希,然后添加到Facebook。

for (Signature signature : info.signatures) { 
      MessageDigest md = MessageDigest.getInstance("SHA"); 
      md.update(signature.toByteArray()); 
      Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
    } 
+0

谢谢Nidhin飘柔。但是我已经添加了这些行,并且我已经检查了几百次,我的密钥散列是正确的(LogCat中显示的密钥散列与我在Facebook开发人员设置中的密钥散列相同。想法为什么我仍然无法登录Facebook?谢谢! – curiousbird

+0

其实我只是意识到,我必须卸载我的设备上的Facebook应用程序,才能在我的应用程序的Facebook登录按钮工作!清除Facebook应用程序的数据和缓存没有帮助 - - 我的应用程序中的登录按钮仍然无法工作,你知道这个问题的任何解决方案吗?因为我不能指望用户在使用我的应用程序之前卸载他们android设备上的facebook应用程序... – curiousbird

+1

我正在做fb整合为我的应用程序目前。它的工作完美。所有你需要的是appId。清单中的下面的代码 - 在开发者配置文件中调试和导出密钥哈希值,在应用程序设置中导出密钥哈希值我认为你的问题是关键哈希值 –