2017-09-09 3 views
-1

J'utilise AWS API Gateway + AWS Cognito (identité fédérée + pool d'utilisateurs). Je crée une API REST dans API Gateway. Il y a des méthodes pour obtenir la liste d'utilisateurs et pour obtenir l'utilisateur par l'identification. Que dois-je utiliser comme identifiant d'utilisateur? La réponse doit contenir les données utilisateur suivantes: ID, nom d'utilisateur, prénom, nom de famille, etc. Le nom d'utilisateur, le prénom, le nom de famille sont stockés dans les attributs du pool d'utilisateurs.ID utilisateur dans Cognito

Je vois dans examples qu'ils utilisent cognitoIdentityId comme ID utilisateur. Si je vais utiliser cognitoIdentityId comme identifiant, alors comment dois-je obtenir les données utilisateur par cet identifiant? S'il vous plaît donnez-moi un exemple ou un lien vers l'API référence comment obtenir des données utilisateur par cognitoIdentityId.

Répondre

0

Vous devriez pouvoir obtenir les attributs d'utilisateur comme indiqué dans l'exemple suivant en utilisant le nom d'utilisateur.

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()); 
    } 
}); 

Référence: Examples: Using the JavaScript SDK

Si vous avez besoin d'interroger l'utilisateur en utilisant les attributs AccessToken, utilisez l'exemple suivant.

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 
}); 

Référence: AWS JavaScript SDK GetUser

Note: À l'heure actuelle il n'y a pas de soutien à la fois JavaScript AWS SDK et API pour obtenir l'utilisateur des attributs par UserId.

+0

Je dois obtenir des attributs d'utilisateur dans la fonction lambda dans le backend. Il n'y a pas de nom d'utilisateur, j'ai seulement un identifiant utilisateur dans le backend. – Ildar

+0

Actuellement, il n'y a pas de support dans AWS JavaScript SDK et API pour obtenir les attributs utilisateur par UserId. Vous devez soit stocker le nom d'utilisateur, soit utiliser le jeton d'identifiant, renvoyé par l'authentification AWS Cognito Userpools pour interroger les attributs de l'utilisateur. – Ashan

+0

Je veux juste obtenir l'utilisateur par ID. Il est étrange que Cognito ne le permette pas – Ildar