Как получить подробности использования по имени пользователя в узле js с ampify-js - PullRequest
0 голосов
/ 12 января 2019

Я использую AWS Cognito для аутентификации пользователей для реагирующего приложения, которое пользователи AWS Lambda для извлечения некоторых данных. Как я могу получить данные для конкретного пользователя по имени пользователя?

Приложение похоже на таблицу лидеров. Пользователи аутентифицируются с помощью Cognito, и я храню их имя и URL-адрес изображения там. В клиенте реагирования мне нужно показать конкретную фотографию и имя пользователя на основе некоторого выбора на клиенте.

У меня есть имена пользователей, хранящиеся в базе данных. Можно ли позвонить в Cognito, чтобы узнать подробности пользователя? Или каков лучший подход к этому? Должен ли я хранить эти данные отдельно от Cognito в базе данных? (то есть это похоже на дублирование усилий)

1 Ответ

0 голосов
/ 12 января 2019

Несколько месяцев назад у меня возникла эта проблема, и я создал эту функцию с помощью AWS-Amplify

import Amplify from 'aws-amplify'
var AWS = require('aws-sdk')
const CognitoExpress = require('cognito-express')

import { CognitoUserPool, CognitoUser } from 'amazon-cognito-identity-js'
exports.getUsersFromUserPool = (paramsObject, userPoolRegion) => {
    return new Promise((resolve, reject) => {
        AWS.config.update({ 'region': userPoolRegion, 'accessKeyId': process.env.AWS_ACCESS_KEY_ID, 'secretAccessKey': process.env.AWS_SECRET_KEY })
        var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider()
        cognitoidentityserviceprovider.listUsers(paramsObject, (err, data) => {
            if (err) {
                console.log(err)
                reject(err)
            }
            else {
                resolve(data)
            }
        })
    })
}

Тогда просто позвоните

let listInstsParams = {
                        'AttributesToGet': ['email', 'name'],
                        'Filter': 'username= "' + <your_username>+ '"',
                        'UserPoolId': process.env.INSTITUTION_USER_POOL_ID
                    }
 getUsersFromUserPool(listInstsParams, process.env.INSTITUTION_REGION)
                    .then(({ Users }) => console.log(Users))
...