我使用了许多AWS服务,有些很容易,而有些则有点困难。经过两天的搜索,我可以说这项服务的文档误导了我。
我的任务很简单。我想在Cognito池中更改用户属性。为了简化事情,我只需要更改一个电子邮件地址。应用程序是一个后台管理系统(Express/Node),管理员可以更改用户的电子邮件地址。
阅读和阅读后,我变得更加困惑了。显然,我熟悉的
我已经能够添加新用户。但是我无法更改任何属性(例如电子邮件)。库要求我提供用户名(真实用户)和密码。 我确实有一个用户名(在这种情况下是电子邮件),但我没有密码。
我需要做的就是连接到服务,并发送用户的新属性,就这样。 这是我迄今为止的代码(主要是从各处获取的黑客代码示例),但我无法使其工作:
我可以在AWS控制台中看到用户正在被添加。太好了。
现在如何更改现有用户的属性? 所有类似this和this的示例 建议采用以下方式:
使用案例8。更新已验证用户的用户属性。
这里的问题是我无法验证用户。我只知道用户的电子邮件,而不知道密码。毕竟这只是一个简单的后台程序,在这里我只需要更改用户的电子邮件。
在这种情况下我该怎么办?
我的任务很简单。我想在Cognito池中更改用户属性。为了简化事情,我只需要更改一个电子邮件地址。应用程序是一个后台管理系统(Express/Node),管理员可以更改用户的电子邮件地址。
阅读和阅读后,我变得更加困惑了。显然,我熟悉的
aws-sdk
库有一些我可以使用的Cognito API。获取一个可行的示例来使用它们,结果成了噩梦。
然后我发现有一个library,但只能在客户端使用。经过一些调整,我在Node.js中运行了它。调整是将fetch
库暴露在全局Node.js命名空间中。我已经能够添加新用户。但是我无法更改任何属性(例如电子邮件)。库要求我提供用户名(真实用户)和密码。 我确实有一个用户名(在这种情况下是电子邮件),但我没有密码。
我需要做的就是连接到服务,并发送用户的新属性,就这样。 这是我迄今为止的代码(主要是从各处获取的黑客代码示例),但我无法使其工作:
var poolData = {
UserPoolId : 'euXXXXXXX',
ClientId : 'XXXXXXXXXXXX'
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
好的,以上一行代码连接到现有用户池。
现在如果我这样做:
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);
});
这里的问题是我无法验证用户。我只知道用户的电子邮件,而不知道密码。毕竟这只是一个简单的后台程序,在这里我只需要更改用户的电子邮件。
在这种情况下我该怎么办?
aws-sdk
来完成这个任务。adminUpdateUserAttributes。 - robbannn