【问题标题】:Facebook Android SDK and sessionsFacebook Android SDK 和会话
【发布时间】:2025-12-31 04:45:16
【问题描述】:

我正在使用 Facebook 的 android SDK,我有一个问题。

所以.. 在登录流程中,在会话回调中,我们获取图形用户和响应,我们可以从这些字段中提取适当的数据。

但我想在每次打开应用程序时获取用户详细信息。

在每次应用需要获取用户数据时无需用户登录的正确方法是什么?

    signInWithFacebookButton.setReadPermissions(Arrays.asList("public_profile", "email"));

    signInWithFacebookButton.setSessionStatusCallback(new Session.StatusCallback() {
        @Override
        public void call(Session session, SessionState state, Exception exception) {
            if (session != null && state.isOpened()) {
                Request.newMeRequest(session, new Request.GraphUserCallback() {

                    @Override
                    public void onCompleted(GraphUser user, Response response) {
                        if (response != null && user != null) {
                            new ParseLoginTask(user).execute();
                        }
                        facebookProgressDialog.dismiss();
                    }
                }).executeAsync();
            } else {
                facebookProgressDialog.dismiss();
            }
        }
    });

【问题讨论】:

    标签: android facebook facebook-login facebook-sdk-4.0


    【解决方案1】:

    新 Facebook SDK 中的登录更新,所以不要使用会话

    已删除会话 - AccessToken、LoginManager 和 CallbackManager 类取代并替换了 Session 类中的功能。

    访问令牌 - 您可以使用 SDK 从缓存中加载 AccessToken.getCurrentAccessToken,或者如果应用程序是从应用程序书签冷启动的。有关说明,请参阅 Android 版 Facebook 登录,获取当前令牌。

    并使用 SharedPreferene 保存用户数据。

    参考可以帮助你:

    https://developers.facebook.com/docs/graph-api/using-graph-api/v2.3#readinghttps://developers.facebook.com/docs/graph-api/reference/user

    【讨论】: