首页 > 解决方案 > 无法从 java 中的 aws cognito 用户池中列出用户详细信息

问题描述

我在 aws cognito 中有一个用户池,其中包含大约 100 个用户详细信息。我想通过 java 代码列出所有用户的电子邮件。下面是代码-

      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。 如何解决这个问题或是否有任何打印所有用户的其他方式?

标签: amazon-web-servicesaws-sdkamazon-cognito

解决方案


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

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


推荐阅读