[英]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.