AmazonWebService身份验证/注册

时间:2017-05-08 16:49:58

标签: javascript angularjs amazon-web-services amazon-cognito aws-cognito

我正在使用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.",而用户在我的用户池中得到很好的确认...

我怎么解决?

2 个答案:

答案 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);