android - Session.StatusCallback Facebook Android sdk3.0 onActivityResult 和 onComplete 的区别

标签 android facebook facebook-android-sdk facebook-authorization

我正在使用 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。

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

关于android - Session.StatusCallback Facebook Android sdk3.0 onActivityResult 和 onComplete 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13890011/

相关文章:

java - 新建的 SQLitedatabase 表不存在

android - MotionEvent.getPointerCount() 始终为 1

facebook - 处理存在的用户,但尝试通过 Facebook OAuth/etc 登录

android - 获取/更改我的应用程序的命名空间?

android - Facebook android sdk 4.0.1 - 未调用回调

android - 如何在 Fragment 内的 WebView 中添加 "Go Back"函数?

iOS - 通过应用程序的 Facebook 打开图共享成功,但在 Facebook 上看起来并不像我想要的那样

javascript - 即使在 href 重定向之后如何使用 setTimeout 循环?

android - Facebook Android SDK Session openForPublish 不创建新 session

android - Exoplayer - 是否可以在加载之前检查 URL 是否是有效的 mp4/webm url?