Abr*_*ham 7 javascript angularjs firebase ionic-framework firebase-authentication
我正在使用Firebase和AngularJS.我正在使用Auth身份验证进行谷歌登录,我完成了流程.现在我需要检索存储在本地存储中的用户数据,如firebase:authUser:.
一旦我在本地存储中使用谷歌帐户登录,你就有了firebase:authUser:.create,我需要获取这些详细信息.
我使用以下方法来存储用户数据
firebase.database().ref('users/' + user.uid).set
({
name: user.displayName,
email: user.email,
token: token
});
Run Code Online (Sandbox Code Playgroud)
Web SDK的文档未提及成功进行身份验证后,Firebase会在localStorage中设置User对象.API参考也没有提到这一点.在尝试使用Firebase配置我的Vue应用程序时,我通过检查localStorage以相同的方式发现了这一点.
要从localStorage检索用户,您可以执行以下操作:
const authUser = Object.keys(window.localStorage)
.filter(item => item.startsWith('firebase:authUser'))[0]
Run Code Online (Sandbox Code Playgroud)
你可以有多个条目,localStorage这就是原因filter()
编辑:请参阅下面的Metallica的答案.
更新(2018-02-21):现在似乎有一个部分(Web)身份验证状态持久性 .当我最初发布我的答案时,不确定这是否存在,但是我正在更新此答案以链接它,因为这些问题得到了适度的关注.
更新2(2018-02-21):如持久性行为概述中 所述:
如果没有用户登录且未指定持久性,则将应用默认设置(
local在浏览器应用程序中).
所以localStorage是这证实了我原来的答复默认之前的火力地堡JS SDK是开源.
只是为了增加@Franciso Mateo的答案:提到的过滤,只返回序列化用户对象存储在本地存储中的密钥(字符串).要获取实际的反序列化用户对象,我们需要使用本地存储中的此键读取该项:
const userKey = Object.keys(window.localStorage)
.filter(it => it.startsWith('firebase:authUser'))[0];
const user = userKey ? JSON.parse(localStorage.getItem(userKey)) : undefined;
Run Code Online (Sandbox Code Playgroud)
要获取用户的配置文件信息,请使用 User 实例的属性。例如:
var user = firebase.auth().currentUser;
var name, email, photoURL, uid;
if(user != null) {
name = user.displayName;
email = user.email;
photoUrl = user.photoURL;
uid = user.uid;
}
Run Code Online (Sandbox Code Playgroud)
如果您想详细了解如何使用 Web SDK 在 Firebase 中管理用户,请访问此文档。
| 归档时间: |
|
| 查看次数: |
7851 次 |
| 最近记录: |