2

我正在按照本教程“Android 的 Facebook 登录流程”(https://developers.facebook.com/docs/howtos/androidsdk/3.0/login-with-facebook/)创建一个仅包含一个 facebook 登录按钮的简单应用程序测试facebook登录。

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

此外,我检查了我是否已在 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% 正确的)。太感谢了!

4

1 回答 1

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));
    }
于 2013-07-04T12:08:21.790 回答