javascript - Firebase 检索存储在本地存储中的用户数据作为 firebase :authUser:

标签 javascript angularjs ionic-framework firebase firebase-authentication

我正在使用 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/

相关文章:

javascript - XDK 重定向到模板文件将无法正常工作

javascript - Angular 应用程序应保持登录状态,直到应用程序在浏览器中打开

javascript - IntroJS 添加指令到步骤标记

javascript - 获取 jQuery() 选择的默认(?)元素

javascript - 将 API 请求从使用 Promise 迁移到 Observable(使用 axios)

Javascript:如何从网络应用程序使用 Google API 访问*特定用户*数据?

angular - HTTP 请求效率 Angular 4+

javascript - ionic 重定向

javascript - 就像我们在 Node js 中有 readFileSync 函数一样,我需要 http.getSync - http.get() 的包装器以使其同步

javascript - 从 javascript 树对象创建列表数组?