我正在使用Cognito AmazonWebService和AngularJS进行应用用户管理。
我无法弄清楚如何解决这个问题:
注册后,用户会收到一封电子邮件,其中包含用于确认的代码。 当我尝试输入并验证代码时,我弹出一条消息“错误:用户未经过身份验证”。
但是,如果我交换了我无法自己验证的步骤,因为我有这样的错误:“您的帐户必须得到确认”。
编辑:这就是我确认注册的方式:var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(_poolData);
var userData = {
Username : username,
Pool : userPool
};
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.getAttributeVerificationCode('email', {
onSuccess: function (result) {
console.log('call result: ' + result);
},
onFailure: function(err) {
console.log("error");
alert(err);
},
inputVerificationCode: function(code) {
var verificationCode = prompt('Check you email for a verification code and enter it here: ' ,'');
cognitoUser.verifyAttribute('email', verificationCode, this);
}
});
我也尝试过以下代码:
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.confirmRegistration('123456', true, function(err, result) {
if (err) {
alert(err);
return;
}
console.log('call result: ' + result);
});
但是每当我使用您给我的代码确认用户时,我都会收到此错误消息:"ExpiredCodeException: Invalid code provided, please request a code again."
,而用户在我的用户池中得到很好的确认...
我怎么解决?
答案 0 :(得分:1)
您如何确认用户?它应该类似于下面的内容:
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);
cognitoUser.confirmRegistration('123456', true, function(err, result) {
if (err) {
alert(err);
return;
}
console.log('call result: ' + result);
});
答案 1 :(得分:0)
userData = {
Username: email,
Pool: userPool
};
您的userData应包含电子邮件地址而非用户名。请重新填写用户数据
var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData);