4

我正在使用 Facebook Android sdk3.0。用户通过 Facebook 成功登录后,我想做一些事情。我应该在内部实现它onActivityResult还是实现它的onComplete功能Session.StatusCallback

其实这两者有什么区别吗?我可以假设 Session.StatusCallback onComplete 总是在之后调用onActivityResult吗?

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    // Do Something Here?
}


private class SessionStatusCallback implements Session.StatusCallback {

    @Override
    public void call(Session session, SessionState state, Exception exception) {

        if (session.isOpened()) {
             // Or Do Something Here?
        }
    }
}
4

1 回答 1

5

简短的回答是,你应该两者都做。

onActivityResult 是必需的,因为您需要将信息传递给 Facebook SDK,以便 SDK 验证用户是否已接受条款和权限。一旦 SDK 验证了所有内容,它将使用新状态或发生的任何错误调用 SessionStatusCallback.call。

当您打开一个新会话时,它将首先转换到 OPENING 状态(这将调用您的回调),然后它将执行 SSO,当 SSO 完成时,您的 onActivityResult 将被调用(此时您应该调用 session. onActivityResult 或 uiLifecycleHelper.onActivityResult),然后会话将转换到 OPENED 状态,这将再次调用您的回调。

于 2012-12-18T19:10:42.113 回答