接收错误“;用户登录别名不应为空";尝试使用AWS Cognito用户池在Android上登录用户时
我已经为移动应用程序设置了一个用户池。注册过程按预期工作,但是,尝试登录用户会导致以下异常: 用户登录别名不应为null(服务: AmazonCongnitoIdentityProvider;状态代码:400;错误代码: InvalidParameterException;请求ID:xxx…) 此错误在登录尝试期间产生,称为via: getUser(用户名).getSessionInBackground(authenticationHandler) 要提供更完整的代码片段,当用户单击登录按钮时,将运行包含以下代码的函数:接收错误“;用户登录别名不应为空";尝试使用AWS Cognito用户池在Android上登录用户时,android,amazon-web-services,amazon-cognito,Android,Amazon Web Services,Amazon Cognito,我已经为移动应用程序设置了一个用户池。注册过程按预期工作,但是,尝试登录用户会导致以下异常: 用户登录别名不应为null(服务: AmazonCongnitoIdentityProvider;状态代码:400;错误代码: InvalidParameterException;请求ID:xxx…) 此错误在登录尝试期间产生,称为via: getUser(用户名).getSessionInBackground(authenticationHandler) 要提供更完整的代码片段,当用户单击登录按钮时,
AuthenticationHandler authenticationHandler = new AuthenticationHandler() {
@Override
public void onSuccess(CognitoUserSession userSession) {
Util.showMessage(mContext, "User Successfully Signed In. Session JWT Token: " + userSession.getIdToken().getJWTToken());
btnLogin.setProgress(100);
}
@Override
public void getAuthenticationDetails(AuthenticationContinuation authenticationContinuation, String UserId) {
AuthenticationDetails authenticationDetails = new AuthenticationDetails(UserId, edtPassword.getText().toString().trim(), null);
authenticationContinuation.setAuthenticationDetails(authenticationDetails);
authenticationContinuation.continueTask();
}
@Override
public void getMFACode(MultiFactorAuthenticationContinuation continuation) {
Util.showMessage(mContext, "MFA Code is Required");
// Set Up MFA Process
}
@Override
public void onFailure(Exception exception) {
Log.d(TAG, exception.toString());
Snackbar.make(edtUsername, exception.getMessage(), Snackbar.LENGTH_LONG).show();
btnLogin.setProgress(-1);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
setUpLoginClick();
}
}, 1000);
}
};
AWS.userPool(mContext).getUser(edtUsername.getText().toString()).getSessionInBackground(authenticationHandler);
userPool(Context ctx)是我编写的一个实用函数,用于快速检索配置的userPool对象
有人能解释一下为什么会发生这种情况吗?我在任何地方都找不到有关此错误的讨论或文档。能否提供一段登录代码?我猜你既没有提供用户名也没有提供别名,但这是基于一点。我已经修改了@JeffBailey的代码来显示登录代码。我正在验证对UserPool对象的getUser()方法调用中的用户名。