web-dev-qa-db-ja.com

Firebaseの再認証を使用する

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's 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);
        })
    }
  }
11
KhoPhi

reauthenticate()メソッドは、 firebase.auth.Auth 自体ではなく、 firebase.User で呼び出されます。

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

更新(2017年7月)

Firebase WebSDKの4.0バージョンにはいくつかの重大な変更があります。 リリースノート から:

速報: firebase.User.prototype.reauthenticateは削除され、 firebase.User.prototype.reauthenticateWithCredential

私の知る限り、reauthenticateWithCredentialは古いメソッドのドロップイン置換です。

14

これは、ユーザーが(a)Firebaseで再認証し、(b)再認証後にパスワードを変更できるようにするコードです。これを書いている間、私は約1時間調査したので、誰かが1分節約できることを願っています。

VueJSで書いた:

changePassword() {
            let self = this; // i use "self" to get around scope issues
            var user = firebase.auth().currentUser;
            var credential = firebase.auth.EmailAuthProvider.credential(
                this.$store.state.userId, // references the user's email address
                this.oldPassword
            );

            user.reauthenticateWithCredential(credential)
                .then(function() {
                    // User re-authenticated.
                    user.updatePassword(self.newPassword) 
                        .then(function() {
                            console.log("Password update successful!");
                        })
                        .catch(function(error) {
                            console.log(
                                "An error occurred while changing the password:",
                                error
                            );
                        });
                })
                .catch(function(error) {
                    console.log("Some kinda bug: ", error);
                    // An error happened.
                });
1
Roly Poly

2019年5月現在、若干の変更があります。詳細をご覧ください こちら 。コードは次のとおりです。

var user = firebase.auth().currentUser;
var credential = firebase.auth.EmailAuthProvider.credential(user.email, password);

// Prompt the user to re-provide their sign-in credentials
return user.reauthenticateWithCredential(credential);
0
user3640687