无法更新来自 Firebase 的电子邮件(身份验证)



我有一个Firebase身份验证,您可以登录和注销。但我希望currentUser可以更改电子邮件。

我有一个密码重置功能,可以发送带有链接的电子邮件,你可以重置密码,但它不适用于电子邮件更改。

这是配置文件页面

这是代码

<template>
<div class="container">
<div class="card">
<div class="card-header">
<h1>Profile</h1>
</div>
<div v-if="!isHidden" class="alert alert-success" role="alert">
<strong>Email sended</strong>
</div>
<div class="card-body">
<form action="#" @submit.prevent="submit" @click="isHidden = !isHidden">
<div class="form-group row mb-0">
<div class="col-md-7 offset-sm-6 offset-md-7 offset-xl-9">
<input type="submit" class="btn btn-primary" @click="resetPassword" value="Reset your password">
</div>
</div>
</form>
<div class="">
<input type="email" class="form-control" v-model="email">  
<input type="submit" class="btn btn-primary" @click="resetEmail" value="Reset your email">
</div>
</div>
</div>
</div>
</template>
<script>
import firebase from "firebase";
/* eslint-disable */
export default {
data() {
return {
email: "",
password: "",
isHidden: true
};
},
methods: {
login(e) {
firebase.auth().signInWithEmailAndPassword(this.email, this.password)
.then(user => {
alert('You are logged in as ' + this.email);
this.$router.push('/index');
location.reload();
},
err => {
alert(err.message);
})
e.preventDefault();
},
resetPassword() {
const auth = firebase.auth();
auth.sendPasswordResetEmail(auth.currentUser.email).then(() => {
console.log('Email send');
// Email sent.
}).catch((error) => {
// An error happened.
console.log(error);
});
},
resetEmail() {
const auth = firebase.auth();
auth.updateEmail(this.email).then(() => {
console.log('Email changed');
// Email sent.
}).catch((error) => {
// An error happened.
console.log(error);
});
}
}
};
</script>

当我运行这个时,我得到这个错误:

Uncaught TypeError: auth.updateEmail is not a function
at VueComponent.resetEmail (Profile.vue?5a88:64)
at invoker (vue.runtime.esm.js?2b0e:2023)
at HTMLInputElement.fn._withTask.fn._withTask (vue.runtime.esm.js?2b0e:1822)

我做错了什么,因为我阅读了Firebase文档并在谷歌上检查,但我做错了一些事情。

updateEmail()方法不是"根"Firebase Auth服务的方法,而是User的方法。

所以你必须沿着以下路线做一些事情:

const auth = firebase.auth();
auth.currentUser.updateEmail(this.email).then(() => {...});

相关内容

最新更新