2016-12-14 256 views
0

我在保持用戶在我的Android應用程序中登錄到AWS Cognito時遇到了問題。這是檢查該代碼:Android-保持用戶登錄到AWS Cognito

CognitoUser user = AppHelper.getPool().getCurrentUser(); 

username = user.getUserId(); 

if(username != null) { 
    AppHelper.setUser(username); 
    inUsername.setText(user.getUserId()); 
    user.getSessionInBackground(authenticationHandler); 
} 

的問題是,有時(我一段時間後猜的)應用程序忘記了用戶和代碼:

user.getUserId(); 

返回null。當然,這是從來沒有空:從示例應用程序的代碼

AppHelper.getPool().getCurrentUser(); 

我的代碼基礎,所以我不明白爲什麼這是行不通的。我認爲Cognito池可能存在問題,因此我更改了設備選項以始終記住用戶設備,但問題沒有消失。

回答

0

喜格熱戈日Brzęczyszczykiewicz,

user.getUserId();總是會返回用戶ID,如果引用CognitoUser對象與CognitoUser user = AppHelper.getPool().getCurrentUser();創建之後,用戶以前成功登錄帳戶。

對您所看到的行爲的解釋可能是user已更改爲引用未設置給任何用戶的CognitoUser對象。在Android設備上清除應用數據後執行CognitoUser user = AppHelper.getPool().getCurrentUser();時可能會發生這種情況。

你可以提供關於你的應用的更多細節,以更好地理解這個問題嗎?當應用執行user.getSessionInBackground(authenticationHandler);時,您能否成功登錄?

+0

是的,它確實處理好。唯一的問題是如何登錄一小時後會話已過期的用戶,但他返回到應用程序。 –