使用ListUsers获取所有已经或未经验证其电子邮件地址的用户 - AWS Cognito

时间:2017-04-18 07:15:27

标签: python amazon-web-services amazon-cognito aws-cognito

我正在尝试获取具有 email_verified 属性的所有cognito用户的列表,然后是所有不具备该属性的用户(我也可以使用获取所有用户,将 email_verified 属性与用户一起使用,以便我可以创建两个列表)。到目前为止我的方法是做这样的事情

client.list_users(
    UserPoolId=pool_id,
    AttributesToGet=['email_verified']
)

只要所有用户都拥有 email_verified 属性,此功能就可以使用。但是,如果用户没有此属性,我会收到此错误:

  

ClientError:发生错误(InvalidParameterException)时   调用ListUsers操作:一个或多个请求的属性   不存在。

我曾试图在ListUsers函数中使用Filter参数,但它似乎并不喜欢 email_verified 属性。

任何建议都将不胜感激。

如果重要,我想在python

中执行此操作

3 个答案:

答案 0 :(得分:3)

我知道这个问题很旧,但是我会回答,以防万一有人也在寻找答案(就像我昨天一样)。

如果在调用listUsers时仅省略AttributesToGet参数,它将返回具有每个用户的所有属性的用户列表。然后,您可以遍历该列表并选择具有email_verified属性的用户,具体取决于该属性是true还是false。

答案 1 :(得分:0)

AttributesToGet字段基本上是一个投影,是您希望事实上的搜索返回的一组属性。如果不存在,则无法获得,因此错误。

您是否可以让每个拥有电子邮件属性的用户?然后根据该属性是否存在于集合中来拆分列表?

答案 2 :(得分:0)

尝试使用属性" status"。

状态应该显示"已确认"和未经证实的"用户。

以下是您可以搜索的属性列表。搜索不支持其他属性。

用户名(区分大小写)

电子邮件

PHONE_NUMBER

名称

GIVEN_NAME

FAMILY_NAME

preferred_username

cognito:user_status(在控制台中称为“已启用”)(区分大小写)

状态(不区分大小写)