54 votes

Erreur AWS Cognito: 'identityPoolId' n'a pas réussi à satisfaire la contrainte

Je suis nouveau Cognito. Je suis en train de mettre en œuvre AWS Cognito à l'aide de Lambda. C'est le tutoriel qui je suis.

AmazonCognitoIdentityClient client =
                new AmazonCognitoIdentityClient();
    GetOpenIdTokenForDeveloperIdentityRequest tokenRequest = new GetOpenIdTokenForDeveloperIdentityRequest();
    tokenRequest.setIdentityPoolId("us-east-1_XXXXXXX");

C'est l'Id de pool que j'utilise dans le setIdentityPoolId

enter image description here

C'est le test JUnit

public class AuthenticateUser implements RequestHandler<Object, Object> {

@Override
public Object handleRequest(Object input, Context context) {

    AuthenticateUserResponse authenticateUserResponse = new AuthenticateUserResponse();
    @SuppressWarnings("unchecked")
    LinkedHashMap inputHashMap = (LinkedHashMap)input;
    User user = authenticateUser(inputHashMap);
    return null;
}

public User authenticateUser(LinkedHashMap input){
    User user = null;
    String userName = (String) input.get("userName");
    String passwordHash = (String) input.get("passwordHash");

    try {
        AmazonDynamoDBClient client = new AmazonDynamoDBClient();
        client.setRegion(Region.getRegion(Regions.US_EAST_1));
        DynamoDBMapper mapper = new DynamoDBMapper(client);
        user = mapper.load(User.class, userName);

        if(user != null){
            System.out.println("user found");
            if(user.getPasswordHash().equals(passwordHash)){
                System.out.println("user password matched");
                String openIdToken = getOpenIdToken(user.getUserId());
                user.setOpenIdToken(openIdToken);
                return user;
            } else {
                System.out.println("password unmatched");
            }
        } else {
            System.out.println("user not found");
        }
    } catch (Exception e) {
        System.out.println("Error: " + e.toString());
    }

    return user; 
}

C'est la sortie

user found
user password matched

Mais j'obtiens l'erreur suivante et, par conséquent, return user déclaration est un échec

1 validation error detected: Value 'us-east-1_XXXXXX' at 'identityPoolId' 
failed to satisfy constraint: Member must satisfy regular expression pattern: [\w-]+:[0-9a-f-]+ 
(Service: AmazonCognitoIdentity; Status Code: 400; Error Code: ValidationException; 

142voto

Chetan Mehta Points 2953

Vous utilisez un identifiant de pool d'utilisateurs Cognito comme identifiant de pool d'identités. Ce sont deux choses différentes. Les identifiants du pool d'identités sont au format us-east-1: XXXX-XXXXXX-XXXX-XXXX.

Pour obtenir un identifiant de pool d'identités, vous devez utiliser les parties "Gérer les identités fédérées" de la console Cognito et non la section "Gérer les pools d'utilisateurs". J'espère que cela t'aides.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X