2017-09-14 2 views
2

J'ai créé un pool d'utilisateurs AWS cognito avec l'email comme attribut obligatoire et l'email vérifié pour la vérification. Les utilisateurs sont créés à partir de mon service backend java à l'aide de AWSCognitoClient sdk et en appelant la méthode adminCreateUser (createUser). L'utilisateur reçoit un e-mail avec un mot de passe temporaire qui, en se connectant pour la première fois, définit un nouveau mot de passe. Maintenant, quand j'exécute le flux de mot de passe oublié, je reçois l'erreur suivante,AWS cognito a oublié le flux de mots de passe

InvalidParameterException: Cannot reset password for the user as there is no registered/verified email or phone_number 

Bien que j'ai reçu un mot de passe temporaire à l'id e-mail je me suis inscrit et changé mon mot de passe pour toute première fois que je reçois l'erreur ci-dessus . Quelqu'un peut-il expliquer ce qui me manque?

Voici le code javascript am exécution pour flux oublié de mot de passe,

forgotPassword(username: String, poolInfo:any){ 

     var poolData = { 
      UserPoolId : poolInfo.poolId, // Your user pool id here 
      ClientId : poolInfo.portalClientId // Your client id here 
     }; 

     var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData); 

     var userData = { 
      Username : username, 
      Pool : userPool 
     }; 

     var cognitoUser = new AWSCognito.CognitoIdentityServiceProvider.CognitoUser(userData); 

     cognitoUser.forgotPassword({ 
      onSuccess: function (result) { 

      this.router.navigate(['login']); 

      }, 
      onFailure: function(err) { 
       alert(err); 
      }, 
      //Optional automatic callback 
      inputVerificationCode: function(data) { 
       var verificationCode = prompt('Please input verification code ' ,''); 
       var newPassword = prompt('Enter new password ' ,''); 
       cognitoUser.confirmPassword(verificationCode, newPassword, this); 
      } 
     }); 
    } 

Répondre

3

Résolu. J'ai dû ajouter "email_verified": "True" comme attribut pour les utilisateurs que j'ai créés à partir de mon service backend.

+0

marquer la réponse s'il vous plaît – Efren

0

J'ai résolu ce problème avec python:

response = cognito_client.get_user_attribute_verification_code(AccessToken='eyJraWQiOiJtTEM4Vm......',AttributeName='email') 

response = cognito_client.verify_user_attribute(AccessToken='eyJraWQiOiJtTEM......', AttributeName='email', Code='230433') 

def forgot_password(usename): 
    ClientId = 'f2va............' 

    response = cognito_client.forgot_password(ClientId=ClientId, Username=username) 
def confirm_forgot_password(): 
    ClientId = 'f2va............' 
    response = cognito_client.confirm_forgot_password(ClientId=ClientId,Username=username,ConfirmationCode='644603',Password='12345678')