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)。如何检索标准和自定义属性?
这是我的回复
答案 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 正确的值。
userName 是您当前在应用中登录的用户的用户名(并调用cognitoUser.getUserAttributes())
正确设置自定义属性的权限和值后,希望它有所帮助!