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

Vue/Quasar 环境下 Firebase Auth 未填充 providerData 数组问题咨询

问题:Firebase 认证成功后 user.providerData 数组为空,仅重载页面后才填充

我在 VueJS / QuasarJS 应用中搭配使用 firebase-js-sdk 和 firebaseui-web 实现身份认证功能。
在通过任意配置的登录提供方(如密码、Google、Apple 等)完成认证后,我需要校验用户使用的登录渠道。但认证成功后立即查询,本应存储对应信息的 user.providerData[] 数组为空。
但重载应用后,user.providerData[] 数组会突然被正确填充数据。
我使用如下代码获取用户数据:

import { getAuth } from "firebase/auth";

const auth = getAuth();
const user = auth.currentUser;

if (user) {
  console.log(user.providerData)
} 

执行代码后 user 对象其他属性均已完整填充(包括认证令牌等),但 user.providerData[] 数组为空,仅在执行页面重载(CTRL-R)后才会被填充数据。
我检索了两个项目的 issue 页面和官方文档,未找到能解释该现象的相关内容。
恳请各位提供排查方向,万分感谢!

补充说明

按照网友建议,我使用 onAuthStateChanged 监听用户状态变更:

onAuthStateChanged(
  fbAuth,
  (user) => {
    if (user) {
      console.log("onAuthStateChanged: user found");
      console.log("onAuthStateChanged: user.providerData", user.providerData);
      console.log("onAuthStateChanged: user", user);
    } else {
      console.log("onAuthStateChanged: no user found");
    }
  },
  function (error) {
    console.log("onAuthStateChanged:", error);
  }
);

但即便在认证完成后等待数分钟,user.providerData 数组仍仅在页面重载后才会被填充。
我使用的依赖版本如下:

"firebase": "9.6.1",
"firebaseui": "6.0.0",

解决方案

这是 firebase 9.6.1 版本的已知缺陷,核心原因是该版本在用户首次登录完成、用户对象初始化流程中,未将 providerData 的写入逻辑与 onAuthStateChanged 的触发时机做同步,导致回调触发时 providerData 还未完成写入,只有页面重载后从本地缓存读取完整用户信息时才能拿到正常数据。
你可以按以下优先级修复:

  • 优先升级 firebase 版本到 9.6.2 及以上,该问题在后续小版本更新中已经被官方修复,升级后无需修改业务代码即可正常读取 providerData 数据
  • 如果暂时无法升级版本,可以在 onAuthStateChanged 拿到用户对象后,手动调用 user.getIdTokenResult(true) 强制刷新用户令牌,触发用户信息全量更新后再读取 providerData 即可,示例代码如下:
onAuthStateChanged(fbAuth, async (user) => {
  if (user) {
    // 强制刷新令牌触发用户信息全量更新
    await user.getIdTokenResult(true);
    console.log(user.providerData) // 此时可获取到完整数据
  }
})
  • 临时适配可以直接从 firebaseui 的登录成功回调中获取当前登录的提供方信息,无需等待用户对象更新。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:06:04