我正在使用Firebase和AngularJS。我正在对谷歌登录使用Auth身份验证,我完成了检索存储在本地存储中的用户数据所需的process.Now,比如firebase:authUser:。
一旦我登录与谷歌帐户在本地存储,您有firebase:authUser:.created,我需要获取这些详细信息。
我使用以下方法存储用户数据
firebase.database().ref('users/' + user.uid).set
({
name: user.displayName,
email: user.email,
token: token
});发布于 2017-05-20 04:09:54
Web的文档没有提到在成功进行身份验证后,Firebase会在localStorage中设置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 所述
如果未登录用户且未指定持久性,则将应用默认设置(浏览器应用程序中的
local)。
因此,在Firebase JS SDK开源之前,localStorage是默认的,它证实了我最初的回答。
发布于 2017-08-15 21:15:07
补充@Franciso Mateo的答案:前面提到的过滤只返回序列化的用户对象存储在本地存储中所使用的键(字符串)。为了获得实际的反序列化的user对象,我们需要使用这个键从本地存储中读取项:
const userKey = Object.keys(window.localStorage)
.filter(it => it.startsWith('firebase:authUser'))[0];
const user = userKey ? JSON.parse(localStorage.getItem(userKey)) : undefined;发布于 2016-08-20 22:12:08
要获取用户的配置文件信息,请使用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;
}如果您想了解有关如何使用Web SDK管理Firebase用户的更多信息,请访问此documentation。
https://stackoverflow.com/questions/39035594
复制相似问题