Невозможно отобразить данные пользователя из пула пользователей aws cognito в java - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть пул пользователей в 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());

Но когда я запускаюкод, который я получаю как исключение as- com.amazonaws.services.cognitoidp.model.AWSCognitoIdentityProviderException: отсутствует токен аутентификации (служба: AWSCognitoIdentityProvider; код состояния: 400; код ошибки: MissingAuthenticationTokenException. как решить это или естьЕсть ли другой способ напечатать всех пользователей?

Ответы [ 3 ]

0 голосов
/ 13 октября 2018

Чтобы все заработало, нужно добавить следующую строку кода:

    AWSCredentials awsCreds = new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY);

Также необходимо явно указать ключ доступа aws и секретный ключ для их учетной записи aws.

0 голосов
/ 05 декабря 2018

@ 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++;
}
0 голосов
/ 28 сентября 2018

Я бы подтвердил, что учетные данные, передаваемые в AWSStaticCredentialsProvider, действительны.В противном случае код выглядит правильно - у меня есть похожий код в одном из моих проектов, который отлично работает.

FYI - listUsers одновременно возвращает только 60 результатов.Вам нужно будет получить paginationToken из ответа, добавить его в последующий запрос и снова вызвать listUsers в цикле, чтобы получить всех пользователей

...