我想在我的Angular 4應用程序中檢索當前登錄的Firebase用戶的UID。雖然,如果我將'firebase.auth()。currentUser'記錄到控制檯,我會得到'null'。因此,'firebase.auth()。currentUser.uid'給出了'無法讀取屬性'空'錯誤'。firebase.auth()。currentUser爲null
根據這篇文章https://firebase.google.com/docs/auth/web/manage-users這將意味着我目前還沒有登錄。雖然,我是,因爲我可以從我的數據庫中讀取數據(我的規則不允許未經身份驗證的用戶),並且登錄方法沒有給出了任何錯誤。
我還可以看出,隨着UID 1用戶在火力控制檯登錄(.../U/1 /項目/ 我的項目 /認證/用戶)
我的數據庫規則:
{
"rules": {
"users": {
"$uid": {
".write": "$uid === auth.uid",
".read": "$uid === auth.uid"
}
}
}
}
注:我沒有使用任何的火力地堡的登錄方法。我使用我的php後端來驗證用戶併爲firebase生成自定義令牌,完全如此處所述:https://firebase.google.com/docs/auth/admin/create-custom-tokens。
角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)
謝謝!我對Angular 4比較陌生,並沒有真正想過這個。感謝您的快速和明確的答案! – Kevin
沒問題!我很高興我能提供幫助。 –