简体   繁体   English

Android Facebook SDK-重新启动后如何保持登录状态

[英]Android Facebook SDK - How can I stay logged in after a reboot

I'm using the facebok SDK and a BootReceiver which is triggered when the boot sequence has completed: 我正在使用facebok SDK和一个BootReceiver,当启动顺序完成时会触发它:

public class BootReceiver extends BroadcastReceiver {

I presume that a user is logged in when: 我假设在以下情况下用户已登录:

public boolean isLoggedIn() {
    return AccessToken.getCurrentAccessToken() != null;
}

However, this always returns as false. 但是,这始终返回为false。

How can I resume a user's session and keep them logged in after a reboot? 如何重新启动用户会话并在重新启动后保持登录状态? This needs to be done within the boot receiver to check if a user was previously logged in, and provide access to: 这需要在引导接收器中完成,以检查用户先前是否已登录,并提供对以下内容的访问权限:

Profile.getCurrentProfile()

You can try to logOut before perform a login inside the broadcastReceiver. 您可以尝试注销,然后再在broadcastReceiver内部执行登录。 This will ensure you have the user logged in 这将确保您已登录用户

    LoginManager loginManager = LoginManager.getInstance();
    loginManager.logOut();
    loginManager.logInWithReadPermissions(...);

    loginManager.registerCallback(...);

I figured it out! 我想到了!

It seems to work if I set up an Asynchronous call to refresh the access token, then check if the user was logged in: 如果我设置一个异步调用来刷新访问令牌,然后检查用户是否登录,这似乎可以工作:

@Override
public void onReceive(Context context, Intent intent) {
    if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
        AccessToken.refreshCurrentAccessTokenAsync(new AccessToken.AccessTokenRefreshCallback() {
            @Override
            public void OnTokenRefreshed(AccessToken accessToken) {
                System.out.println("Refresh succeed");
                AccessToken.setCurrentAccessToken(accessToken);
                if (isLoggedIn()) {
                    System.out.println("User is logged in");
                    doCoolStuffHere();
                } else {
                    System.out.println("User is not logged in");
                }
            }

            @Override
            public void OnTokenRefreshFailed(FacebookException exception) {
                System.out.println("Refresh failed");
            }
        });
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Facebook android sdk 4. *-如何获取登录的用户电子邮件? - Facebook android sdk 4.* - How can I get the logged in user E-mail? 通过Facebook SDK - Android登录后,Facebook用户将保持登录状态 - Facebook user is kept logged on after login via Facebook SDK - Android 如何在重启后在android中自动启动我的应用程序? - how can I autostart my app in android after reboot? 如何将我的android SDK的标准片段与facebook SDK一起使用? - how can I use the standard Fragment of the android SDK with facebook SDK? 如何使用Android中的Facebook SDK在Facebook中上传图片 - How can I upload an image in facebook using facebook SDK in android 如何使用Facebook Android SDK切换授权的Facebook用户? - How can I switch authorized facebook user with Facebook Android SDK? Facebook Sdk 4.0如何在sdkinitialize之后立即检查是否登录 - Facebook Sdk 4.0 how to check if logged in just after sdkinitialize 如何查看已登录的用户 android (Facebook SDK 4.0) - How to check users already logged-in in android (Facebook SDK 4.0) 保持登录Facebook? - Stay Logged in in Facebook? 如何在facebook sdk 4.4.0 android中存储用户登录状态 - How to store user logged in state in facebook sdk 4.4.0 android
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM