总是获取会话状态:CLOSED_LOGIN_FAILED,令牌:{AccessToken令牌:ACCESS_TOKEN_REMOVED在Android SDK sdk3.0。

总是获取会话状态:CLOSED_LOGIN_FAILED,令牌:{AccessToken令牌:ACCESS_TOKEN_REMOVED在Android SDK sdk3.0。 即使当我运行facebook sdk给出的例子进行身份validation,而不是redirect到下一个flow.it显示前一页本身。

出于某种原因,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)); } 

确保使用相应的软件包名称replace“your_package_name>”。 看看logcat,并抓住keyhash,并在你的Facebook应用程序设置中input它。

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

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

  1. 您在Facebook本机应用程序本身input了不正确的凭据。

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

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

排除#2问题只需按照此页面上的“创buildFacebook应用程序”下的说明, https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/

随Facebook SDK提供的示例将失败,因为示例应用程序的应用程序configuration不会注册您的debugging密钥散列。 有关于如何解决这个在“运行示例”在同一链接下的说明。 这是一个报价:

简而言之,您创build的每个Android应用程序都将被签名,并且您将需要在Facebook上注册每个应用程序的关键散列作为安全检查的真实性 – 我们稍后会看到。 但是为了绕过对SDK样本的检查,并快速启动并运行,您可以将您的密钥哈希添加到您的全球Facebook开发人员configuration文件中。

我有一个类似的问题 – 我得到CLOSED_LOGIN_FAILEDcom.facebook.FacebookOperationCanceledException: User canceled operation ,我绝对不是取消操作。

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

 android:launchMode="singleInstance" 

我有同样的错误,我已经忘记了starter活动的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; } } 

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

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

另一个解决方法是禁用ssologin方法。 这可以这样做:

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

来源: Android的 – 强制Facebook连接 – 堆栈溢出

我面临同样的问题,但解决scheme是,我不得不进入Facebook(developper.facebook),并在我的应用程序设置,并添加如果使用和添加包名称的密钥如果它不帮助您尝试访问此链接对于其他解决scheme:“ Android的Facebook SDK 3.0给”remote_app_id不匹配存储的ID“,而login ”

如果您没有明确地使用某个密钥存储区对您的应用程序进行签名,那么IDE将使用默认密码对您进行签名。 你必须签署你的项目与特定的密钥存储,提取密钥哈希,并将其添加到您的Facebook帐户。

如何签署你的项目

如何提取密钥哈希

在我的情况下,Facebook应用程序ID是错误的,也没有添加到Facebook上的应用程序的关键哈希

奇怪的是,它曾经在一个可debugging的非签名版本上正常工作!

我们遇到了同样的问题,并在相当长的一段时间内search和search。 我检查了散列键,清单文件和很多其他的东西来解决这个问题。 我们正在使用Facebook的sdk较旧的3.23.1版本,我们的应用程序不能连接到Facebook,只有某些手机。 它返回“CLOSED_LOGIN_FAILED”状态,并通过logcat报告“不能使用空调用程序包调用LoginActivity,如果调用程序的launchMode是singleInstance,则会发生这种情况。

在某些手机上,比如Fairphone的手机,增加了一项新function: https ://fairphone.zendesk.com/hc/en-us/articles/207164396-这是什么 – 隐私 – 影响 – function –

此function避免了在某些特殊情况下与Facebook进行可靠的通信。 一旦你解决它,再次启动你的应用程序,并接受权限,我们的应用程序就像预期的那样。

希望这有助于避免在修复过程中得到的灰色头发。

我也从SessionLoginSample中得到了这个错误数小时。 它在developer.facebook.com上创build了一个显式的应用程序SessionLoginSample之后就起作用了。 我将应用程序ID复制到Android清单等,它的工作。 换句话说,Facebook入门指南中描述的示例应用程序configuration失败。