Я использовал много сервисов от AWS, некоторые из них были простыми, а некоторые были немного сложными.После 2 дней поиска по всему, я могу сказать, что документация для этой службы вводит в заблуждение.
У меня есть простая задача.Я хочу изменить атрибут пользователя в пуле Cognito.И чтобы упростить задачу, мне просто нужно изменить адрес электронной почты, и это все.Приложение представляет собой Backoffice (Express / Node), где администраторы могут изменять электронную почту пользователя.
После чтения и чтения я все больше путаюсь.Судя по всему, у библиотеки aws-sdk
, с которой я знаком, есть некоторые Cognito API, которые я мог бы использовать.Получение рабочего примера о том, как их использовать, оказалось кошмаром.Затем я обнаружил, что есть библиотека , но только для использования на стороне клиента.После некоторых настроек я запустил его в Node.js.Трюк состоял в том, чтобы открыть библиотеку fetch
в глобальном пространстве имен Node.js.
Мне удалось добавить нового пользователя.Но, несмотря на все мои намерения, я не могу изменить какие-либо атрибуты (например, электронную почту).Библиотека хочет, чтобы я указал имя пользователя (реального пользователя) и пароль.У меня есть имя пользователя (в данном случае электронное письмо), но у меня нет пароля.
Все, что мне нужно сделать, это подключиться к службе и отправить новый атрибут для пользователя, и это все,Это то, что у меня есть (в основном взломанные примеры кода из разных мест), и я не могу заставить его работать:
var poolData = {
UserPoolId : 'euXXXXXXX',
ClientId : 'XXXXXXXXXXXX'
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
Ok. Приведенная выше строка устанавливает соединение с существующим пулом пользователей.
Теперь, если бы я сделал это:
var attributeList = [];
var dataEmail = {
Name : 'email',
Value : 'email@mydomain.com'
};
var dataPhoneNumber = {
Name : 'phone_number',
Value : '+15555555555'
};
var attributeEmail = new AmazonCognitoIdentity.CognitoUserAttribute(dataEmail);
var attributePhoneNumber = new AmazonCognitoIdentity.CognitoUserAttribute(dataPhoneNumber);
attributeList.push(attributeEmail);
attributeList.push(attributePhoneNumber);
userPool.signUp('username', 'password', attributeList, null, function(err, result){
if (err) {
alert(err.message || JSON.stringify(err));
return;
}
cognitoUser = result.user;
console.log('user name is ' + cognitoUser.getUsername());
});
В консоли AWS я вижу, что добавляется пользователь.Отлично.
Теперь, как изменить атрибуты существующего пользователя?Все примеры, такие как this и this Предложите следующее:
Вариант использования 8. Обновите атрибуты пользователя для аутентифицированного пользователя.
var attributeList = [];
var attribute = {
Name : 'nickname',
Value : 'joe'
};
var attribute = new AmazonCognitoIdentity.CognitoUserAttribute(attribute);
attributeList.push(attribute);
cognitoUser.updateAttributes(attributeList, function(err, result) {
if (err) {
alert(err.message || JSON.stringify(err));
return;
}
console.log('call result: ' + result);
});
Проблема в том, что я не могу аутентифицировать пользователя.Я не могу знать пароль пользователя, только его адрес электронной почты.В конце концов, это простая программа Backoffice, где мне просто нужно изменить электронную почту пользователей.
Что я могу сделать в этом случае?