Cognito 中的用户 ID

问题描述 投票:0回答:1

我使用 AWS API Gateway + AWS Cognito(联合身份 + 用户池)。我正在 API 网关中创建 REST API。有获取用户列表和通过 ID 获取用户的方法。我应该使用什么作为用户 ID?

响应应包含以下用户数据:ID、用户名、名字、姓氏等。用户名、名字、姓氏存储在用户池属性中。

我在 examples 中看到他们使用 cognitoIdentityId 作为用户 ID。如果我将使用 cognitoIdentityId 作为 ID,那么我应该如何通过这个 ID 获取用户数据?请给我一个示例或 API 参考链接,了解如何通过 cognitoIdentityId 获取用户数据。

amazon-web-services aws-api-gateway amazon-cognito
1个回答
0
投票

您应该能够使用用户名获取用户属性,如以下示例所示。

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都不支持通过UserId获取用户属性

© www.soinside.com 2019 - 2024. All rights reserved.