2016-05-14 27 views
24

Ben yeni Cognito'yum. Lambda kullanarak AWS Cognito kullanmaya çalışıyorum. Bu takip eden tutorial. AWS Cognito Hatası: 'identityPoolId' kısıtlaması tatmin edemedi

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

Bu

ben setIdentityPoolId içinde kullanıyorum havuz Kimliği

enter image description here

Bu Bu çıkış

user found 
user password matched 
olduğunu

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

JUnit testidir

Ama aşağıdaki hatayı alıyorum ve dolayısıyla return user açıklamada Sen kimlik havuzu kimliğiyle bir Cognito kullanıcı havuzu kimliği kullanan

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; 

cevap

82

başarısız oluyor. Onlar iki farklı şey. Kimlik havuzu kimlikleri, us-east-1: XXXX-XXXXXX-XXXX-XXXX biçimindedir. Kimlik havuzu kimliği almak için Cognito konsolunun "Kullanıcı Havuzlarını Yönet" bölümünün "Federal Kimlikleri Yönet" bölümlerini kullanmalısınız. Bu yardımcı olur umarım.

+1

başka bir 2 saat kurtardı !!! –

+3

@ Chetan- Bu cevabın üstbilgisini, öğreticiyi daha iyi hale getirmek için geri bildirim olarak ve Kimlik Havuzu için "Federasyon Kimliklerini Yönet" den daha iyi bir ad olarak kullanmanız gerektiğini düşünüyorum. – suku

+0

@Chetan Kullanıcı havuzu kimliğinden nasıl kimlik havuzu kimliği alırsınız? Veya bilişsel kullanıcıyla ilişkilendirilmiş mevcut rolü aldınız mı? –

İlgili konular