You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase9使用reauthenticateWithCredential改密码报类型错误如何解决

错误原因
  • signInWithEmailAndPassword 是异步方法,返回的是 Promise<UserCredential> 类型的对象,你没有处理异步逻辑,直接把Promise实例传给了reauthenticateWithCredential,而后者要求传入的是AuthCredential类型的认证凭证,参数类型不匹配导致报错。
  • 你不需要调用signInWithEmailAndPassword生成重认证所需的凭证,该方法的作用是直接执行登录操作,并非生成凭证。
修复方案
  1. 首先补充导入EmailAuthProvider工具:
import { getAuth, reauthenticateWithCredential, EmailAuthProvider, updatePassword } from "firebase/auth";
  1. 替换凭证生成逻辑,使用对应Provider生成合法的认证凭证:
const auth = getAuth();
const user = auth.currentUser;

// 用当前用户邮箱+输入的旧密码生成重认证需要的凭证
const credential = EmailAuthProvider.credential(user.email, this.oldPassword);

reauthenticateWithCredential(user, credential).then(() => {
  // 重认证成功,此处执行修改密码逻辑
  return updatePassword(user, this.newPassword);
}).then(() => {
  console.log("密码修改成功");
}).catch((error) => {
  // 可根据error.code区分错误类型,比如旧密码错误、新密码强度不够等
  console.log(error);
});

注意:需要保证调用该逻辑时用户处于登录状态,auth.currentUser不为空,否则需要先处理登录状态校验。

内容的提问来源于stack exchange,提问作者Noobmaster06

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:54:03