我使用 AWS API Gateway + AWS Cognito(联合身份 + 用户池)。我正在 API 网关中创建 REST API。有获取用户列表和通过 ID 获取用户的方法。我应该使用什么作为用户 ID?
响应应包含以下用户数据:ID、用户名、名字、姓氏等。用户名、名字、姓氏存储在用户池属性中。
我在 examples 中看到他们使用 cognitoIdentityId 作为用户 ID。如果我将使用 cognitoIdentityId 作为 ID,那么我应该如何通过这个 ID 获取用户数据?请给我一个示例或 API 参考链接,了解如何通过 cognitoIdentityId 获取用户数据。
您应该能够使用用户名获取用户属性,如以下示例所示。
var AWS = require('aws-sdk');
AWS.config.region = 'us-east-1'; //This is required to derive the endpoint
var poolData = { UserPoolId : 'us-east-1_TcoKGbf7n',
ClientId : '4pe2usejqcdmhi0a25jp4b5sh3'
};
var userPool = new AWS.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var userData = {
Username : 'username',
Pool : userPool
};
var cognitoUser = new AWS.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.getUserAttributes(function(err, result) {
if (err) {
alert(err);
return;
}
for (i = 0; i < result.length; i++) {
console.log('attribute ' + result[i].getName() + ' has value ' + result[i].getValue());
}
});
如果需要使用AccessToken查询用户属性,那么使用下面的例子
var params = {
AccessToken: 'STRING_VALUE' /* required */
};
cognitoidentityserviceprovider.getUser(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
注意:目前AWS JavaScript SDK和API都不支持通过UserId获取用户属性