onActivityResult 和 onComplete of Session.StatusCallback Face



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

其实两者之间有什么区别吗?我可以假设 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?
        }
    }
}

简短的回答是,你应该同时做这两件事。

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

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

最新更新