【发布时间】:2021-12-25 17:20:29
【问题描述】:
在 VueJS / QuasarJS 应用程序中,我使用 firebase-js-sdk [1] 和 firebaseui-web [2] 来处理身份验证。
在使用任何已配置的提供程序(例如密码、谷歌、苹果等)成功验证后,我想检查用户使用的提供程序。但在成功认证后,应该包含信息的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) 之后才会填充数组。
我搜索了两个项目问题页面和文档,但没有找到任何可以解释这一点的东西。
我很感谢您知道下一步该往哪里看!
编辑
正如@aside 建议的那样,我使用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 数组仍然只会在页面重新加载后填充。
这是一个完整的演示:https://codesandbox.io/s/github/perelin/firebase-auth-providerdata-test
提前致谢:)
我正在使用
"firebase": "9.6.1",
"firebaseui": "6.0.0",
[1]https://github.com/firebase/firebase-js-sdk
[2]https://github.com/firebase/firebaseui-web
【问题讨论】:
-
如果我是你,我会转储
firebase ui库,它有 145 个未解决的问题。 Firebase 库已经提供了非常易于使用的功能。 -
其实是这么想的。项目工作人员在某些问题上也反应迟钝且固执己见。但就目前而言,它们为我提供了我需要的 80% 的功能,而实施工作很少。由于它是我的一个爱好项目,我不想自己重建整个 UI 的东西。所以现在我会和他们在一起。
标签: firebase vue.js firebase-authentication firebaseui