始终获取会话状态:CLOSED_LOGIN_FAILED,令牌:{AccessToken令牌:facebook android sdk3.0中的ACCESS_TOKEN_REMOVED。

时间:2013-01-31 08:49:29

标签: android facebook

始终获取会话状态:CLOSED_LOGIN_FAILED,令牌:{AccessToken令牌:facebook android sdk3.0中的ACCESS_TOKEN_REMOVED。即使我运行facebook sdk给出的示例进行身份验证,也没有将其重定向到下一个flow.it显示上一页本身。

12 个答案:

答案 0 :(得分:51)

出于某种原因,keytool为我生成的哈希与我的应用程序不同。这对我有用。使用facebook提供的标准代码生成哈希:

PackageInfo info = getPackageManager().getPackageInfo("<your_package_name>",  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));
    }

确保替换“your_package_name&gt;”使用相应的包名称。查看logcat并获取keyhash并在Facebook应用程序设置中输入。

答案 1 :(得分:7)

ACCESS_TOKEN_REMOVED与此问题无关。这只是Facebook SDK没有记录访问令牌。所以你可以放心地忽略那部分错误。

有两件事可能是CLOSED_LOGIN_FAILED的原因:

  1. 您在Facebook原生应用中输入了错误的凭据。

  2. 在developers.facebook.com上的应用设置中输入的Android密钥哈希值与APK的密钥哈希值不匹配。

  3. 排除故障#1打开Facebook本机应用程序,确保您已正确登录并可以访问内容。如果您在Facebook本机应用程序中输入了不正确的凭据(可能您最近更改了密码),那么Facebook SDK将反复尝试使用本机应用程序执行SSO并报告CLOSED_LOGIN_FAILED。

    对#2进行问题排查只需按照此页面上的“创建Facebook应用程序”https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/下的说明进行操作。

    随着SDK SDK提供的示例将失败,因为示例应用程序的应用程序配置将不会注册您的调试密钥哈希。有关如何在同一链接中的“运行示例”下修复此问题的说明。这是一个引用:

      

    简单地说,您创建的每个Android应用都会被签名,而您   将需要在Facebook注册每个应用程序的密钥哈希作为安全性   检查真实性 - 我们稍后会看到。但要绕过这个检查   对于SDK示例以及快速启动和运行它们,您可以   将您的密钥哈希添加到您的全球Facebook开发人员资料中。

答案 2 :(得分:5)

我遇到了同样的错误,我忘记了起始活动的onActivityResult中的以下行:

Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);

以下是整个方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case RESULT_CODE_IMPORT_FACEBOOK:
          //do stuff
          break;
    default:
          Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
          break;
    }
}

答案 3 :(得分:5)

我遇到了类似的问题 - 我CLOSED_LOGIN_FAILED获得了com.facebook.FacebookOperationCanceledException: User canceled operation,我肯定没有取消该操作。

在我的应用程序代码的每一行玩弄了7-8个小时后,我注意到这是我的清单中的活动设置的。删除它解决了它。

android:launchMode="singleInstance"

答案 4 :(得分:3)

如果您在沙箱模式下使用Facebook应用程序,请确保您使用的帐户位于授权管理员或开发人员列表中。

答案 5 :(得分:2)

尝试从您的设备卸载您的Facebook应用,然后重新安装。

答案 6 :(得分:2)

我面临同样的问题,但解决方案是我必须进入facebook(developper.facebook)并在我的应用程序设置中添加如果使用的密钥并添加包名称 如果它没有帮助您尝试访问此链接以获取其他解决方案: “Android Facebook SDK 3.0 gives "remote_app_id does not match stored id" while logging in

答案 7 :(得分:2)

另一种解决方法是使用sso登录方法。这可以这样做:

LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
authButton.setLoginBehavior(SessionLoginBehavior.SUPPRESS_SSO);

来源:Android - Force Facebook connexion - Stack Overflow

答案 8 :(得分:0)

如果您没有使用某个密钥明确签署您的APP,那么IDE会使用默认密钥为您签名。您必须使用特定密钥库对项目进行签名,提取密钥哈希并将其添加到您的Facebook帐户。

how to sign your project

how to extract key hash

答案 9 :(得分:0)

在我的情况下,Facebook应用程序ID错误,并且Key Hash未添加到Facebook上的应用程序

奇怪的是它曾经在可调试的非签名版本上运行良好!!

答案 10 :(得分:0)

我们遇到了同样的问题,并且正在寻找和谷歌搜索很长一段时间。我检查了哈希键,清单文件和许多其他东西来解决这个问题。我们使用旧的3.23.1版本的facebook sdk,我们的应用程序无法连接到Facebook,仅适用于某些手机。它返回“CLOSED_LOGIN_FAILED”状态,并通过logcat报告“无法使用null调用包调用LoginActivity。如果调用者的launchMode是singleInstance,则会发生这种情况。”

在某些手机上,比如Fairphone的手机,增加了一项新功能: https://fairphone.zendesk.com/hc/en-us/articles/207164396-What-is-the-Privacy-Impact-feature-

此功能可避免在某些特殊情况下与Facebook的可靠通信。一旦你取消它,再次启动你的应用程序并接受权限,我们的应用程序表现得像预期的那样。

希望这有助于避免在修复过程中遇到的白发。

答案 11 :(得分:-1)

我也从SessionLoginSample中得到了这个错误数小时。我在developer.facebook.com上创建了一个显式应用程序SessionLoginSample后,它运行起来了。我将应用程序ID复制到Android清单等中,并且它有效。换句话说,Facebook的“入门指南”中描述的示例应用程序配置失败。

相关问题