angular – firebase.auth().currentUser为null
发布时间:2020-12-17 17:28:50 所属栏目:安全 来源:网络整理
导读:我正在尝试在Angular 4应用程序中检索当前登录的firebase用户的UID.但是,如果我将’firebase.auth().currentUser’记录到控制台,我会得到一个’null’.因此’firebase.auth().currentUser.uid’给出’无法读取属性’uid’of null’错误. 根据这篇文章https:/
我正在尝试在Angular 4应用程序中检索当前登录的firebase用户的UID.但是,如果我将’firebase.auth().currentUser’记录到控制台,我会得到一个’null’.因此’firebase.auth().currentUser.uid’给出’无法读取属性’uid’of null’错误.
根据这篇文章https://firebase.google.com/docs/auth/web/manage-users,这意味着我目前还没有登录.虽然,我是,因为我可以从我的数据库中读取数据(我的规则不允许未经身份验证的用户),并且登录方法没有给出任何错误. 我还可以看到具有uid 1的用户登录了firebase控制台(… / u / 1 / project / my-project / authentication / users) 我的数据库规则: { "rules": { "users": { "$uid": { ".write": "$uid === auth.uid",".read": "$uid === auth.uid" } } } } 注意:我没有使用任何Firebase登录方法.我正在使用我的php后端来验证用户并为firebase生成自定义令牌,完全如下所述:https://firebase.google.com/docs/auth/admin/create-custom-tokens. Angular 4登录代码: constructor(private afAuth: AngularFireAuth) { this.login(); } login() { console.log('We are logging in on Firebase :)'); firebase.auth().signInWithCustomToken(localStorage.getItem('firebase_token')).catch(function (error) { console.log(error.message); console.log('You are not logged in!'); }); this.user = firebase.auth().currentUser; console.log(firebase.auth().currentUser); console.log(firebase.auth().currentUser.uid); } 控制台输出: chat.service.ts:59 We are logging in on Firebase :) chat.service.ts:65 null ChatComponent_Host.html:1 ERROR TypeError: Cannot read property 'uid' of null at ChatService.Array.concat.ChatService.login (chat.service.ts:66) at new ChatService (chat.service.ts:23) at _createClass (core.es5.js:9572) at _createProviderInstance$1 (core.es5.js:9544) at resolveNgModuleDep (core.es5.js:9529) at NgModuleRef_.get (core.es5.js:10615) at resolveDep (core.es5.js:11118) at createClass (core.es5.js:10971) at createDirectiveInstance (core.es5.js:10802) at createViewNodes (core.es5.js:12230) at createRootView (core.es5.js:12125) at callWithDebugContext (core.es5.js:13506) at Object.debugCreateRootView [as createRootView] (core.es5.js:12823) at ComponentFactory_.create (core.es5.js:9916) at ComponentFactoryBoundToModule.create (core.es5.js:3333) 解决方法
我认为您应该将代码修改为以下内容并再试一次: –
constructor(private afAuth: AngularFireAuth) { this.login(); } login() { console.log('We are logging in on Firebase :)'); firebase.auth().signInWithCustomToken(localStorage.getItem('firebase_token')) .then(success=>{ this.user = firebase.auth().currentUser; console.log(firebase.auth().currentUser); console.log(firebase.auth().currentUser.uid); }) .catch(function (error) { console.log(error.message); console.log('You are not logged in!'); }); } 通过使用then,您可以确保在访问登录用户对象之前已成功返回登录承诺. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |