vjm
vjm

Reputation: 49

Firebase ResetPassword issue

I am building user authentication in my website using Angular and Firebase's Email & Password authentication framework. This is NOT using the Firebase Simple Login Framework but the newly introduced native framework.

My code links to Firebase using:

<script src="https://cdn.firebase.com/js/client/1.1.0/firebase.js"></script>

I can create users, login and so on but the ResetPassword call fails with the following error.

Error: Firebase.resetPassword failed: First argument must be a valid object.
    at Error (native)
    at E (https://cdn.firebase.com/js/client/1.1.0/firebase.js:15:73)
    at F.G.td (https://cdn.firebase.com/js/client/1.1.0/firebase.js:192:79)
    at Object.resetPassword (http://localhost:8000/src/js/services/loginservice.js:78:27)
    at k.$scope.resetPassword (http://localhost:8000/src/js/controllers.js:35:20)
    at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js:177:68
    at http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js:171:237
    at f (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js:194:174)
    at k.$eval (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js:112:68)
    at k.$apply (http://ajax.googleapis.com/ajax/libs/angularjs/1.2.26/angular.min.js:112:346) 

The code I use is from the firebase example as follows:

ref.resetPassword(email, function(error) {
  if (error === null) {
    console.log("Password reset email sent successfully");
  } else {
    console.log("Error sending password reset email:", error);
  }
});

I have verified that a valid email id is being passed in.

Can you please let me know what the issue is?

Thanks in advance vm

Upvotes: 2

Views: 1622

Answers (2)

themikola
themikola

Reputation: 124

I have found that using an object no longer works, it would keep giving me "First argument must contain the key "email", even then the object was as the answer above. After much frustration i got it working passing the email parameter as per the firebase docs.

$scope.resetPassword = function(email){
          console.log("made in to auth method for reset passowrd with email - " + email);

ref.resetPassword({
    email: email
}, function(error) {
  if (error) {
    switch (error.code) {
      case "INVALID_USER":
        console.log("The specified user account does not exist.");
        break;
      default:
        console.log("Error resetting password:", error);
    }
  } else {
    console.log("Password reset email sent successfully!");
  }
});

}

Upvotes: 0

Nikita Kuznetsov
Nikita Kuznetsov

Reputation: 169

According to the firebase documentation, you should be passing in an object not a string.

https://www.firebase.com/docs/web/api/firebase/resetPassword.html

var credentials = {email: email};
ref.resetPassword(credentials, function(error) {
  if (error === null) {
    console.log("Password reset email sent successfully");
  } else {
    console.log("Error sending password reset email:", error);
  }
}

Upvotes: 4

Related Questions