我正在使用 Firebase 和 AngularJS。我正在使用 Auth 身份验证进行 google 登录并完成了该过程。现在我需要检索存储在本地存储中的用户数据,如 firebase:authUser:。
一旦我使用本地存储中的 google 帐户登录,您就拥有了 firebase:authUser:.created,我需要获取这些详细信息。
我使用了下面的方法来存储用户数据
firebase.database().ref('users/' + user.uid).set
({
name: user.displayName,
email: user.email,
token: token
});
最佳答案
Web SDK 的文档没有提到在身份验证成功后,Firebase 会设置 User本地存储中的对象。 API 引用也没有提到这一点。在尝试使用 Firebase 配置我的 Vue 应用程序时,我通过检查 localStorage 发现了这一点。
要从 localStorage 检索用户,您可以执行以下操作:
const authUser = Object.keys(window.localStorage)
.filter(item => item.startsWith('firebase:authUser'))[0]
您可以在 localStorage
中有多个条目,所以这就是 filter()
的原因
编辑:请参阅下面 Metallica 的回答。
更新(2018-02-21):好像现在有一个部分(Web) Authentication State Persistence .不确定我最初发布答案时是否存在这个问题,但我正在更新这个答案以链接它,因为这个问题得到了适度的关注。
更新 2 (2018-02-21):如 Overview of persistence behavior 所述:
If no user is signed in and no persistence is specified, the default setting will be applied (
local
in a browser app).
所以 localStorage
是默认设置,这证实了我在 Firebase JS SDK 开源之前的原始答案。
关于javascript - Firebase 检索存储在本地存储中的用户数据作为 firebase :authUser:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39035594/