getUserAttributes响应中缺少自定义属性 - AWS cognito

时间:2018-02-09 06:34:12

标签: amazon-web-services aws-lambda aws-sdk amazon-cognito aws-cognito

const userData = { Username: username, Pool: userPool };
const cognitoUser = new AWS.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.getUserAttributes(function(err, result) {
                        if (err) {
                            alert(err);
                            return;
                        }
                        console.log(result)
                        for (i = 0; i < result.length; i++) {
                            console.log('attribute ' + result[i].getName() + ' has value ' + result[i].getValue());
                        }
                    });

我有一个自定义字段userType。我已设置自定义属性的读取,写入权限。但是在getUserAttributes的响应中,我只获得标准属性(sub,email_verified,email)。如何检索标准和自定义属性?

这是我的回复

enter image description here

1 个答案:

答案 0 :(得分:10)

首先,您需要确保App客户端有权读取属性。

转到AWS Cognito,选择用户池,然后选择常规设置&gt;应用客户端并选择App Client,然后单击“设置属性读写权限”

您应该会看到以下options(请注意我已创建“custom:premium”属性并允许读取设置)

然后,为了查看cognitoUser.getUserAttributes()结果中的自定义属性,您需要为其设置一些值,这可以通过AWS CLI使用以下命令完成:

aws cognito-idp admin-update-user-attributes \
--user-pool-id userPoolId \
--username userName \
--user-attributes Name=custom:premium,Value=1

在上面的示例中,我将“自定义:高级”属性设置为值1(显然您需要替换 userPoolId userName 正确的值。

    可以在AWS Cognito中找到
  • userPoolId (例如:eu-central-1_896ERRASw)
  • userName 是您当前在应用中登录的用户的用户名(并调用cognitoUser.getUserAttributes())

    正确设置自定义属性的权限和值后,

    And here is the result of the function call

希望它有所帮助!