15

使用 Android Facebook SDK 3.5,我经常遇到登录问题:我收到CLOSED_LOGIN_FAILED. FacebookOperationCanceledException我知道关于 SO 有大约一百万个CLOSED_LOGIN_FAILED问题,但这个不同。请不要回答“您的密钥哈希是否正常?它是否超出沙盒?应用程序 ID 是否正常?”,因为它们是。:-)我告诉你为什么我知道他们是:

如果我禁用 SSO,我可以使用更复杂的非 SSO 方法登录。从那一刻起,即使 SSO 再次启用,它也开始工作,之后就没有CLOSED_LOGIN_FAILED答案了。相同的用户,相同的密钥,相同的应用程序,相同的 id,一切都是一样的。非 SSO 登录只需要一次,然后一切恢复正常。不是一个孤立的案例,我可以用几个不同的帐户一致地重现它。

FacebookOperationCanceledException尽管用户授权访问,仍会收到。要求适当的权限(实际上是一个publish_stream,仅此而已),授权对话框没问题,我按确定,而不是取消,但我仍然得到那个异常。

代码直接来自教程。一些相关部分供参考:

private void onSessionStateChange(Session session, SessionState state, Exception exception) {
  if (state.isOpened()) {
    shareButton.setEnabled(true);
    if (pendingPublishReauthorization && state.equals(SessionState.OPENED_TOKEN_UPDATED)) {
      pendingPublishReauthorization = false;
      publishStory();
    }
  }
  else if (state.isClosed())
    shareButton.setEnabled(false);
}

...

final LoginButton authButton = (LoginButton) findViewById(R.id.authButton);
authButton.setPublishPermissions(PERMISSIONS);

...

uiHelper = new UiLifecycleHelper(this, new Session.StatusCallback() {
  @Override
  public void call(Session session, SessionState state, Exception exception) {
    onSessionStateChange(session, state, exception);
  }
});

...

@Override
public void onResume() {
  super.onResume();

  final Session session = Session.getActiveSession();
  if (session != null && (session.isOpened() || session.isClosed()))
    onSessionStateChange(session, session.getState(), null);
  uiHelper.onResume();
}
4

1 回答 1

0

我有一个类似的问题 - 我正在接受CLOSED_LOGIN_FAILED并且com.facebook.FacebookOperationCanceledException: User canceled operation我绝对没有取消操作。

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

android:launchMode="singleInstance"

或另一种尝试

我在 developer.facebook.com 上创建了一个明确的应用程序 SessionLoginSample 后,它就起作用了。我将应用程序 ID 复制到 Android 清单等中,并且它有效。换句话说,Facebook 的入门指南中描述的示例应用程序配置失败。

于 2014-05-20T07:11:49.907 回答