2016-05-14 33 views
24

我是新的Cognito。我正在尝试使用Lambda实现AWS Cognito。这是我正在关注的tutorialAWS Cognito错误:'identityPoolId'未能满足约束条件

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

这是我使用的setIdentityPoolId池ID

enter image description here

这是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; 
} 

这是输出

user found 
user password matched 

但我收到以下错误,因此,该return user声明失败

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; 

回答

82

您使用的是Cognito用户池ID为标识池ID。他们是两个不同的东西。身份池ID的格式为us-east-1:XXXX-XXXXXX-XXXX-XXXX。

要获取身份池ID,您应该使用Cognito控制台的“管理联合身份”部分而不是“管理用户池”部分。希望这可以帮助。

+1

救了我又一个2小时!!! –

+3

@ Chetan-我认为你应该在这个答案上使用upvotes作为反馈,使得教程更好,并且比身份池的“Manage Federated Identities”更好的名字 – suku

+0

@Chetan你将如何从用户池ID获取身份池ID?或者获取与cognito用户关联的当前角色? –

相关问题