i使用AWS API Gateway AWS Cognito(联合身份 用户池)。我正在API网关中创建REST API。有一些方法可以获取用户列表和通过ID获取用户。我应该用作用户ID?
响应应包含以下用户数据:ID,用户名,名字,姓氏等。用户名,名称,姓氏存储在用户池属性中。
我在示例中看到他们使用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());
}
});
参考:示例:使用JavaScript SDK
如果您需要使用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 Getuser
注意:当前AWS JavaScript SDK和API都没有支持用户属性。