Facebook身份验证始终提供CLOSED_LOGIN_FAILED会话

时间:2015-03-12 15:01:57

标签: android facebook android-facebook

我正在尝试在我的应用中实现Facebook。我做过几次没有任何问题。但是这次我无法弄清楚错误背后的原因。

会话状态始终显示为CLOSED_LOGIN_FAILED。我已经找到了各种各样的SO链接来回答这个问题,但所有人都在讨论我的活动launchmode或者错误匹配密钥哈希值singleinstance缺少的API密钥。

但我必须说,我已经检查了所有这些,但它们似乎不是问题。

我试过了:

try {
        PackageInfo info = getActivity().getPackageManager().getPackageInfo(
                "com.jam.app",
                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 (PackageManager.NameNotFoundException e) {

    } catch (NoSuchAlgorithmException e) {

    }

获取哈希密钥但徒劳无功。我也通过命令提示符尝试了keytool方式。

我的清单文件包含API密钥以及以下内容。

的Manifest.xml

    <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/app_id" />

    <activity
        android:name="com.facebook.LoginActivity"
        android:screenOrientation="portrait" />

我被困在最后的3天。有人请帮忙。如果我的最终细节有帮助,请告诉我。 提前谢谢。

2 个答案:

答案 0 :(得分:2)

在尝试连接到Facebook时,您可以在此处粘贴您在logcat中获得的完整步骤和错误吗?

如果您的Facebook应用程序处于开发模式并且您尝试使用Facebook登录,但Key Hash不匹配,则您正在使用的apk中的Key Hash会在Logcat中与Facebook消息一起显示。在此之后,您只需将其粘贴到Facebook Application Dashboard配置中,然后查看它是否正常工作。

答案 1 :(得分:1)

哇哇,终于解决了。除非我创建了一个全新的项目,否则无法理解。我按照facebook themseleves给出的这个facebook set-up指南,实际上引导我找到解决方案。

问题是,我已将Facebbok导入为模块并将其添加到build.gradle中的模块依赖项

compile ':facebook'

而文件明确指出,

您可能需要将 com.facebook.android:facebook-android-sdk:添加到build.gradle依赖项并重建。

,build.gradle现在看起来像这样

compile 'com.facebook.android:facebook-android-sdk:3.21.1'

和宾果它有效。 :)

除了上述内容之外,我们使用以下方法生成哈希键非常重要:

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                  "com.example.webwerks.facebookintegartiondemoapp",
        PackageManager.GET_SIGNATURES);
        for (android.content.pm.Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                Log.d("KeyHash:", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (PackageManager.NameNotFoundException e) {

        } catch (NoSuchAlgorithmException e) {

        }

向#Pratik致信帮助我。谢谢:))

相关问题