2017-04-19 47 views
0

为cognito用户池的文档可以在这里找到:我可以使用ListUsers API通过用户的uuid查询Cognito用户池吗?

http://docs.aws.amazon.com/cognito/latest/developerguide/how-to-manage-user-accounts.html

在这一点,他们不说你是否可以通过自动生成的子属性,它是一个UUID查询用户。它明确表示不能通过自定义属性搜索用户,但sub/uuid不是自定义属性。奇怪的是,在可搜索属性列表中,sub/uuid不是其中之一。当然,虽然你可以通过他们的UUID查找用户,但是如何做到这一点?

回答

1

你知道,我已经使用了COgnito,但是从来不需要通过子查询(或者除了用户名之外的其他参数)查找。我研究它,因为你可以,但它不是很清楚(就像他们的许多文档)。这是我看到你可以尝试...希望它可以帮助男人。

 // the imported ListUsersResult is... 
     import com.amazonaws.services.cognitoidp.model.ListUsersRequest; 
     import com.amazonaws.services.cognitoidp.model.ListUsersResult; 

      // class var 

     protected final AWSCognitoIdentityProviderClient identityUserPoolProviderClient; 

     // omitted stuff... 
     // initialize the Cognito Provider client. This is used to talk to the user pool 
     identityUserPoolProviderClient = new AWSCognitoIdentityProviderClient(new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY)); // creds are loaded via variables that are supplied to my program dynamically 
     identityUserPoolProviderClient.setRegion(RegionUtils.getRegion(USER_POOL_REGION)); // var loaded 


     // ...some code omitted   
     ListUsersRequest listUsersRequest = new ListUsersRequest(); 
     listUsersRequest.withUserPoolId(USER_POOL_ID); // id of the userpool, look this up in Cognito console 
     listUsersRequest.withFilter("sub=xyz"); // i THINK this is how the Filter works... the documentation is terribad 


    // get the results 
    ListUsersResult result = identityUserPoolProviderClient.listUsers(listUsersRequest); 

    List<UserType> userTypeList = result.getUsers(); 
    // loop through them 
    for (UserType userType : userTypeList) { 
     List<AttributeType> attributeList = userType.getAttributes(); 
     for (AttributeType attribute : attributeList) { 
      String attName = attribute.getName(); 
      String attValue = attribute.getValue(); 
      System.out.println(attName + ": " + attValue); 
     } 
    } 

如果你的用户名,你可以得到这样

// build the request 
    AdminGetUserRequest idRequest = new AdminGetUserRequest(); 
    idRequest.withUserPoolId(USER_POOL_ID); 
    idRequest.withUsername(username); 

    // call cognito for the result 
    AdminGetUserResult result = identityUserPoolProviderClient.adminGetUser(idRequest); 
    // loop through results 
+0

用户非常感谢你对这个答案,似乎很乐于助人,在与他们的文档线。奇怪的是,虽然我成功地导入了ListUsersRequest库,但是我的eclipse告诉我.withFilter不是ListUsersRequest类的废话方法。我有困惑我正在使用正确的ListUsersRequest类,并从正确的地方导入它,任何想法,为什么它不会工作? – HelloCoding

+0

另外我想知道在这段代码中identityUserPoolProviderClient是什么类?我检查了AmazonCognitoIdentityClient类的文档,但它没有方法listUsers,所以我不认为是这样。 – HelloCoding

+0

嘿,很高兴帮助。这里是一些更多的信息添加到答案... – Matt

相关问题