Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get current user in angular using firebase?

Currently trying to build an app using ionic v2 & firebase v3. Unfortunately I'm struggling to simply grab hold of the logged in user's details.

In my app.ts, I connect correctly to my firebaseapp and the logged in user is recognised and the user is shown the homepage:

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);

Then in another of my files where I wish to retrieve the logged in user's ID using

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

I get the following error in my console:

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]

I'm confused as to why currentUser() is not a function, when the documentation says it is? https://firebase.google.com/docs/auth/web/manage-users#get_the_currently_signed-in_user

Thanks!

like image 320
Kyanite Avatar asked Dec 05 '22 00:12

Kyanite


1 Answers

the documentation says that

firebase.auth().currentUser NOT firebase.auth().currentUser() is the correct way to get the user

like image 121
Aaron Saunders Avatar answered Jan 18 '23 23:01

Aaron Saunders