我正在使用Facebook Android sdk3.0。我想在用户通过Facebook成功登录后做一些事情。我应该在onActivityResult
内部实现它还是Session.StatusCallback
的onComplete
函数?
其实两者之间有什么区别吗?我可以假设 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 状态,这将再次调用你的回调。