2016-03-07 41 views
0

我使用Facebok的SDK和BootReceiver當啓動序列已完成其被觸發後登錄:Android的Facebook的SDK - 我怎樣才能保持一個重啓

public class BootReceiver extends BroadcastReceiver { 

我假定一個用戶登錄在何時:

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

但是,這總是返回false。

如何恢復用戶會話並在重新啓動後保持登錄狀態?這需要啓動接收器內進行檢查,如果用戶以前登錄,並提供訪問:

Profile.getCurrentProfile() 

回答

0

您可以嘗試註銷前的廣​​播接收器內進行登錄。這將確保你有用戶登錄

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"); 
      } 
     }); 
    } 
}