onActivityResult与Session的onComplete之间的区别.StatusCallback Facebook Android sdk3.0

xia*_*xin 4 android facebook facebook-android-sdk facebook-authorization

我正在使用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?
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Min*_* Li 5

简短的回答是,你应该做到这两点.

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

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