我尝试创建重置密码页面。但是,如果我应用它向我显示的动作代码,则代码无效。但它应该是有效的。所以我猜我做的方式是错的?!我还有一个验证电子邮件页面,我也使用applyActionCode,它工作正常。是的,我100%确定oobCode必须正确。
console.log(this.$route.query.oobCode.toString())
firebase.auth().applyActionCode(this.$route.query.oobCode.toString()).then(
(user) => {
cosnole.log('user', user)
user.updatePassword(this.password).then(
function(user) {
console.log('password updated')
}).catch(
function(err) {
console.log(err.message)
}
)
}).catch(
function(err) {
console.log(err.message)
}
)
答案 0 :(得分:2)
使用firebase auth重置用户密码时需要了解一些事项。
applyActionCode
返回包含void
的{{3}}。
用户来自最近通过身份验证的用户的firebase.auth().currentUser
。
firebase.Promise
还会返回包含void
updatePassword
可以选择使用firebase.Promise
组合上述两个。
重要提示:代码必须是由confirmPasswordReset
方法生成的电子邮件返回的有效操作类型(PASSWORD_RESET
)
代码类似于以下内容
firebase.auth().applyActionCode(this.$route.query.oobCode.toString())
.then( () => {
const user = firebase.auth().currentUser
user.updatePassword(this.password).then(
() => {
console.log('password updated')
})
.catch(
error => {
console.log(error.code, error.message)
})
}
.catch(error => {
console.log(error.code, error.message)
})
firebase.auth().confirmPasswordReset(this.$route.query.oobCode.toString(), this.password)
.then( () => {
console.log('password updated')
}
.catch(error => {
console.log(error.code, error.message)
})
注意: 我尚未确认您的代码版本以更新密码,但已使用confirmPasswordReset
。