如何在 Cognito 中检查现有用户 - android?

How to check existing user in cognito - android?

所以我在 android 中设置了 aws cognito。我想执行检查以查看用户何时输入用户名,该用户名是否已存在于我的认知池中。

目前我有这个:

 cognitoUser = userPool.getUser(username_ET.getText().toString());
 if(cognitoUser.getUserId().isEmpty())
 {
      //Great, this is a new user.
 }

但是,cognitoUser 只是设置为我输入的任何内容,它不会返回检查。

希望有人能帮忙!

如果您尝试使用不存在的用户名登录,您将收到 UserNotFoundException 异常。

我的问题的答案是:

        SignUpHandler signupCallback = new SignUpHandler() {

            @Override
            public void onSuccess(CognitoUser cognitoUser, boolean userConfirmed, CognitoUserCodeDeliveryDetails cognitoUserCodeDeliveryDetails)
            {
                Log.d(COGNITO_REGISTER, "sign up succeeded!");

            }
            @Override
            public void onFailure(Exception exception)
            {
                Log.d(COGNITO_REGISTER, "sign up failed!");
                Log.d(COGNITO_REGISTER, exception.getMessage());

                // Sign-up failed, check exception for the cause
            }
        };
        userPool.signUpInBackground(username_ET.getText().toString(), password_ET.getText().toString(), userAttributes, null, signupCallback);

这会有所帮助

catch(Exception exception){
    if(exception.getMessage().contains("UserNotFoundException")){
        ...
    }
}

ListUsers 现在让这变得更容易了。

https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html

这是一个简单的 .NET 示例:

        Dim userRequest = New ListUsersRequest With {
                .UserPoolId = userPoolId,
                .Filter = "username = JohnDoe"
            }
        Dim response = client.ListUsers(userRequest)
        If response.Users.Count < 1 Then
            Return False
        End If
        Return True