在Firebase中如何通过密码对已登录用户执行重新授权操作?
实现方案
Firebase JavaScript SDK v8 没有内置reAuthorizeUser方法,可基于官方原生接口按如下逻辑封装适配你的需求:
// 密码登录用户重新授权封装 function reAuthorizeUser(password) { // 获取当前已登录的用户实例 const currentUser = firebase.auth().currentUser; if (!currentUser) { return Promise.reject(new Error('用户未登录')); } // 构造邮箱密码登录凭证 const authCredential = firebase.auth.EmailAuthProvider.credential( currentUser.email, password ); // 执行重新授权操作 return currentUser.reauthenticateWithCredential(authCredential); }
调用方式和你预期的完全一致:
const password = "some-password" reAuthorizeUser(password) .then(() => console.log("ok")) .catch(() => console.log("ng"))
注意事项
- 该方案仅适用于邮箱+密码方式注册登录的用户,其他登录方式(如第三方授权登录、手机号登录)需使用对应登录Provider的凭证构造方法
- 若重授权失败,可通过catch回调的
error.code字段判断错误原因,常见错误码:auth/wrong-password:输入的密码错误auth/user-mismatch:用户凭证与当前登录用户不匹配auth/user-disabled:当前用户账号已被禁用
内容的提问来源于stack exchange,提问作者tmsick
相关产品推荐
相关产品推荐

