我正在尝试基于cognito用户池构建用户管理。 我使用nodesjs + express作为后端,所有对cognito的操作都将从nodejs完成。
我的注册路线是
app.post('/signup', (req, res) => {
let userName = req.body.userName;
let email = req.body.email;
let familyName = req.body.familyName;
let password = req.body.password;
let attributeList = [];
let dataEmail = {
Name: 'email',
Value: email
};
let name = {
Name: 'name',
Value: userName
};
let familyname = {
Name: 'family_name',
Value: familyName
};
let attributeEmail = new AmazonCognitoIdentity.CognitoUserAttribute(dataEmail);
let attributeName = new AmazonCognitoIdentity.CognitoUserAttribute(name);
let attributeFamilyName = new AmazonCognitoIdentity.CognitoUserAttribute(familyname);
attributeList.push(attributeEmail);
attributeList.push(attributeName);
attributeList.push(familyname);
let userPool = new CognitoUserPool(poolData);
userPool.signUp(email, password, attributeList, null, (err, result) => {
if (err) {
console.log(`got error during signup ${err}`);
res.sendStatus(500);
} else {
let cognitoUser = result.user;
console.log('user name is ' + cognitoUser.getUsername());
res.sendStatus(200);
}
});
});
然而,我失败了,无法找到如何过来
错误参数:
在注册期间出错MissingRequiredParameter:在params中缺少必需的键'Username'
答案 0 :(得分:0)
A'用户名'注册用户始终需要属性。因此,您需要在属性列表中添加一个。
如果您没有要求用户输入用户名或者不需要用户名,则可以使用您使用的任何值来唯一标识用户。这是一种处理它的简单方法。
例如,除了将电子邮件地址添加到电子邮件地址属性之外,还要将其作为用户名属性提交。
参考: http://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-attributes.html