You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 04:55:17