无法列出 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++;
}
我在 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++;
}