【问题标题】:Using ListUsers to get all users that have or haven't verified their email addresses - AWS Cognito使用 ListUsers 获取所有已验证或未验证其电子邮件地址的用户 - AWS Cognito
【发布时间】:2017-09-13 22:09:50
【问题描述】:

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

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

只要所有用户都具有 email_verified 属性,它就可以工作。但是,如果用户没有此属性,我会收到此错误:

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

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

任何建议将不胜感激。

如果这很重要,我很想在 python 中这样做

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!他们的 API 和文档至少可以说很差。
    • 另外,没有属性的时候应该返回null什么的,而不是crash...
    【解决方案2】:

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

    你能不能让每个用户都有 email 属性,也许?然后根据集合中是否存在该属性来拆分列表?

    【讨论】:

      【解决方案3】:

      尝试使用“状态”属性。

      状态应显示“已确认”和“未确认”用户。

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

      用户名(区分大小写)

      电子邮件

      电话号码

      名字

      给定名称

      家庭名称

      首选用户名

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

      状态(不区分大小写)

      【讨论】:

        猜你喜欢
        • 2018-03-02
        • 2016-09-28
        • 2018-02-17
        • 1970-01-01
        • 2019-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-07
        相关资源
        最近更新 更多