2016-12-14 249 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

是的,它确实处理好。唯一的问题是如何登录一小时后会话已过期的用户,但他返回到应用程序。 –