Java中设置ListUsersRequest的attributesToGet()获取Cognito用户名报错求助
解决Cognito ListUsers请求指定username属性报错的问题
问题原因
attributesToGet()参数用于指定要获取的用户属性(即用户池配置的自定义或标准属性,比如email、given_name等),而username是Cognito用户对象的顶层核心字段,不属于用户属性集合,所以当你传入"username"时会触发InvalidParameterException错误。
解决方案
不需要通过attributesToGet()指定username,它会默认包含在ListUsersResponse返回的UserType对象中。如果只需要获取username,直接从返回结果中提取即可,代码修改如下:
String emailId = "xyz@gmail.com"; ListUsersRequest listUsersRequest = ListUsersRequest.builder() .userPoolId(userPoolId) .filter(String.format("%s = \"%s\"", "email", emailId)) // 移除attributesToGet配置 .build(); ListUsersResponse userInfo = cognitoIdentityProviderClient.listUsers(listUsersRequest); // 提取username for (UserType user : userInfo.users()) { String username = user.username(); // 处理username }
补充说明
如果你同时需要获取其他用户属性(比如email),可以在attributesToGet()中指定这些属性名称,例如:
.attributesToGet("email", "given_name")
内容的提问来源于stack exchange,提问作者Skul
相关产品推荐
相关产品推荐

