Подтвердить что ты не робот

Использование Firebase reauthenticate

Я буду благодарен за помощь в повторной аутентификации пользователя в Firebase. Интересно, имеет ли смысл добавлять все эти замечательные функции, если в документации не объясняется, как его использовать:

В настоящее время это то, что я пытаюсь, и оно не работает. Ошибки как cannot read property 'credential' of undefined

В конструкторе:

  constructor(@Inject(FirebaseApp) firebaseApp: any) {
    this.auth = firebaseApp.auth();
    console.log(this.auth);
  }

то функция

changePassword(passwordData) {
    if(passwordData.valid) {
      console.log(passwordData.value);
      // let us reauthenticate first irrespective of how long
      // user been logged in!

      const user = this.auth.currentUser;
      const credential = this.auth.EmailAuthProvider.credential(user.email, passwordData.value.oldpassword);
      console.log(credential);
      this.auth.reauthenticate(credential)
        .then((_) => {
          console.log('User reauthenticated');
          this.auth.updatePassword(passwordData.value.newpassword)
            .then((_) => {
              console.log('Password changed');
            })
            .catch((error) => {
              console.log(error);
            })
        })
        .catch((error) => {
          console.log(error);
        })
    }
  }
4b9b3361

Ответ 1

Метод reauthenticate() вызывается на firebase.User, а не на firebase.auth.Auth.

var user = firebase.app.auth().currentUser;
var credentials = firebase.auth.EmailAuthProvider.credential('[email protected]', 'firebase');
user.reauthenticate(credentials);

Обновление (июль 2017):

В версии 4.0 Firebase Web SDK произошли некоторые изменения. Из примечания к выпуску:

BREAKING: firebase.User.prototype.reauthenticate был удален в пользу firebase.User.prototype.reauthenticateWithCredential.

Насколько я могу сказать, reauthenticateWithCredential является заменой для старого метода.