2016-03-07 1 views
0

Я использую Facebok SDK и BootReceiver который срабатывает, когда последовательность загрузки завершена:Android Facebook SDK - Как я могу оставаться в системе после перезагрузки

public class BootReceiver extends BroadcastReceiver { 

Я полагаю, что пользователь вошел в систему когда:

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

Однако это всегда возвращается как ложное.

Как возобновить сеанс пользователя и сохранить его после входа в систему после перезагрузки? Это должно быть сделано в загрузочном приемнике, чтобы проверить, если пользователь ранее вошли в систему, а также обеспечить доступ к:

Profile.getCurrentProfile() 

ответ

0

Вы можете попытаться выйти из системы, прежде чем выполнить вход внутри BroadcastReceiver. Это обеспечит регистрацию пользователя.

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

    loginManager.registerCallback(...); 
+0

logInWithReadPermissions требует активность или фрагмент? – Jonty800

+0

Да, вы правы, для этого метода требуется фрагмент или активность –

0

Я понял!

Это похоже на работу, если я настраивал асинхронный вызов, чтобы обновить маркер доступа, а затем проверить, если пользователь вошел в систему:

@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"); 
      } 
     }); 
    } 
} 
Смежные вопросы