使用firebase以角度获取当前用户?

Posted

技术标签:

【中文标题】使用firebase以角度获取当前用户?【英文标题】:Get current user in angular using firebase? 【发布时间】:2016-11-08 00:05:14 【问题描述】:

目前正在尝试使用 ionic v2 和 firebase v3 构建应用。 不幸的是,我很难抓住登录用户的详细信息。

在我的 app.ts 中,我正确连接到我的 firebaseapp,登录的用户被识别,并且用户显示在主页上:

import Component from '@angular/core';
import Platform, ionicBootstrap, NavController from 'ionic-angular';
import StatusBar from 'ionic-native';
import HomePage from './pages/home/home';
declare var firebase:any;
import Data from './providers/data/data';
import LoginPage from './pages/login/login';

@Component(
  template: '<ion-nav [root]="rootPage"></ion-nav>',
  providers: [Data]
)
export class MyApp 
  rootPage: any = LoginPage;

  constructor(platform: Platform) 
    platform.ready().then(() => 
      // Okay, so the platform is ready and our plugins are available.
      // Here you can do any higher level native things you might need.
      StatusBar.styleDefault();

      // Initialize Firebase
      var config = 
        apiKey: "xxxx",
        authDomain: "xxxx.firebaseapp.com",
        databaseURL: "https://xxxx.firebaseio.com",
        storageBucket: "xxxx.appspot.com",
      ;

      firebase.initializeApp(config);

      firebase.auth().onAuthStateChanged((user) => 
        if (user) 
          // If there is a user, take him to home page.
          console.log("User is logged in!");
          //console.log(user);
          this.rootPage = HomePage;
         else 
          // If there is no user logged in, send to login page.
          this.rootPage = LoginPage;
        
      );
    );
  


ionicBootstrap(MyApp);

然后在我希望检索登录用户 ID 的另一个文件中使用

var authData = firebase.auth().currentUser();

我在控制台中收到以下错误:

EXCEPTION: Error: Uncaught (in promise): EXCEPTION: Error in :0:0
ORIGINAL EXCEPTION: TypeError: firebase.auth(...).currentUser is not a function
ORIGINAL STACKTRACE:
TypeError: firebase.auth(...).currentUser is not a function
    at new AddItemPage (http://localhost:8100/build/js/app.bundle.js:97:40)
    at DebugAppView._View_AddItemPage_Host0.createInternal (AddItemPage_Host.template.js:20:27)
    at DebugAppView.AppView.create (http://localhost:8100/build/js/app.bundle.js:30016:21)
    at DebugAppView.create (http://localhost:8100/build/js/app.bundle.js:30228:44)
    at ComponentFactory.create (http://localhost:8100/build/js/app.bundle.js:29245:36)
    at ViewContainerRef_.createComponent (http://localhost:8100/build/js/app.bundle.js:30436:45)
    at http://localhost:8100/build/js/app.bundle.js:53117:47
    at ZoneDelegate.invoke (http://localhost:8100/build/js/zone.js:323:29)
    at Object.onInvoke (http://localhost:8100/build/js/app.bundle.js:35470:41)
    at ZoneDelegate.invoke (http://localhost:8100/build/js/zone.js:322:35)
ERROR CONTEXT:
[object Object]

我很困惑为什么 currentUser() 不是一个函数,当文档说它是? https://firebase.google.com/docs/auth/web/manage-users#get_the_currently_signed-in_user

谢谢!

【问题讨论】:

【参考方案1】:

文档是这么说的

firebase.auth().currentUser NOT firebase.auth().currentUser() 是获取用户的正确方式

【讨论】:

太棒了。刚起床...你可以看出我是在凌晨 3 点写下这个问题的

以上是关于使用firebase以角度获取当前用户?的主要内容,如果未能解决你的问题,请参考以下文章

我使用firebase以角度创建应用程序,如何让每个用户拥有自己的任务表[关闭]

如何从 Firebase 获取服务器时间

在 Swift 3 中包含字典的 Firebase 进程子快照

Firebase - 未找到 GetTokenResult、getExpirationTimestamp()

如何从firebase获取当前用户地址

React Native Firebase Analytics 获取用户国家