无法列出 java 中 aws cognito 用户池的用户详细信息

Unable to list user details from aws cognito user pool in java

我在 aws cognito 中有一个用户池,大约有 100 个用户 details.I 想通过 java 列出所有用户的电子邮件 code.Below 是代码-

      AWSCognitoIdentityProvider cognitoIdentityProvider = AWSCognitoIdentityProviderClientBuilder
            .standard()
            .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
            .withRegion(Regions.fromName(REGION))
            .build();
    try {
    ListUsersRequest req=new ListUsersRequest();
        req=req.withUserPoolId(POOL_ID);

    List<String> attributesToGet=new ArrayList<>();
    attributesToGet.add("email");
        ListUsersResult response = cognitoIdentityProvider.listUsers(req);
    System.out.println(response.getUsers());

但是当我 运行 代码时,我得到异常作为-com.amazonaws.services.cognitoidp.model.AWSCognitoIdentityProviderException:缺少身份验证令牌(服务:AWSCognitoIdentityProvider;状态代码:400;错误代码:MissingAuthenticationTokenException。 如何解决这个问题或者有没有其他方法可以打印所有用户?

我将验证传递到 AWSStaticCredentialsProvider 的凭据是否有效。否则代码看起来是正确的——我在我的一个项目中有类似的代码,但效果很好。

仅供参考 - listUsers 一次只有 returns 60 个结果。您需要从响应中获取 paginationToken,将其添加到后续请求中并再次循环调用 listUsers 以检索所有用户

成功了,需要添加以下代码行-

    AWSCredentials awsCreds = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);

此外,需要明确为其 aws 帐户生成 aws 访问密钥和秘密密钥。

@bwinant 然后我用下面的代码替换了我的代码并解决了问题。

for (;;) {
    result = identityUserPoolProviderClient.listUsers(listUsersRequest);
    System.out.println("Iteration:- " + count + " of " +   
        result.getUsers().size() + " for PaginationToken:- " + 
        result.getPaginationToken());
    System.out.println(result.getUsers().size());
    userTypeList.addAll(result.getUsers());
    for (int i = result.getUsers().size(); i > 0; i--) {
        userTypeList.addAll((Collection<? extends UserType>)  result.getUsers());
    }

    paginationToken = result.getPaginationToken();
    if (paginationToken == null) {
        break;
    }
    listUsersRequest.setPaginationToken(paginationToken);

    count++;
}