使用 AWS Amplify 和 Cognito Userpool 成功登录后如何获取响应中的所有用户属性

时间:2021-06-02 03:33:14

标签: amazon-cognito aws-amplify

我正在使用 AWS Cognito 用户池对我网站的用户进行身份验证。 用户只需输入用户名(在我的情况下为电子邮件 ID)和密码即可登录应用程序。 登录成功后,在repose中可以看到如下属性。

{
    "UserAttributes":[
        {"Name":"sub","Value":"XYZ"},
        {"Name":"email_verified","Value":"true"},
        {"Name":"email","Value":"someone@example.com"}
    ],
    "Username":"someone@example.com"
}

现在我向用户添加了一个新属性,并希望在登录后在响应中返回该属性,但不幸的是没有获得该属性。

有人可以帮助我了解如何在登录后获取用户的所有属性(包括我添加的自定义属性)。我对这个 AWS Cognito 有点陌生。

提前致谢。

2 个答案:

答案 0 :(得分:1)

在您的用户池设置中,选择 App Clients,然后单击您的 App Client 下的 Show Details 以将其展开。 在最底部,单击“设置属性读写权限”。现在,您可以选择要在 ID 令牌中显示的任何属性。可读属性下的任何内容都将添加到您的令牌中,然后您可以对其进行解码。

请注意,这仅添加到 ID 令牌而不是访问令牌。

enter image description here

答案 1 :(得分:0)

在此doc中提到的登录后调用fetchUserAttributes

    Amplify.Auth.fetchUserAttributes(
    attributes -> Log.i("AuthDemo", "User attributes = " + attributes.toString()),
    error -> Log.e("AuthDemo", "Failed to fetch user attributes.", error)
);