0

I AngularFire2 (Ionic2) und Firebase Authentifizierung verwenden.Wie die firebase.User in AngularFire2 bekommen

Ich habe ein Problem, versuchen, den aktuellen Benutzer zu erhalten. Das funktioniert für mich aber uneinheitlich. Manchmal ist es ausgefüllt und manchmal ist es null.

let user: firebase.User = firebase.auth().currentUser; 

Gibt es eine Möglichkeit, den aktuellen Benutzer konsistenter zu bekommen?

Mehr Info:

Ich bin der Anmeldung wie folgt:

import { FirebaseAuth, AuthProviders, AuthMethods } from 'angularfire2'; 

public auth: FirebaseAuth 

    this.auth.login({ 
     provider: AuthProviders.Google, 
     method: AuthMethods.Popup 
    }).then((data: any) => { 
      this.fireAuth.onAuthStateChanged((user) => { 
         .... 
      }); 
    }); 

Hier wird der Benutzer immer aufgefüllt. Aber wo ich Zugang zum Benutzer bekommen muss, ist in einem anderen Teil des Codes.

Jede Hilfe wird geschätzt.

UPDATE

ich versuchen, die den aktuellen Benutzer erhalten folgende:

this.auth.subscribe((authData) => { 
     let user = authData.auth; 
     credential = firebase.auth.GoogleAuthProvider.credential(googleIdToken, googleAccessToken); 
     user.reauthenticate(credential).then(() => {... 
    }); 

Aber dann, wenn ich versuche, die Anmeldeinformationen erstellen, erhalte ich folgende Fehlermeldung:

EXCEPTION: Uncaught (in promise): Error: reauthenticate failed: First argument "credential" must be a valid credential.

Wenn ich den aktuellen Benutzer in der ersten Methode bekomme, bekomme ich keine Fehler und es funktioniert.

Weitere Informationen:

Wenn ich die folgenden user Objekte console.log, sie beide identisch aussehen:

let user: firebase.User = this.fireAuth.currentUser; 
    console.log(user); 

und

this.auth.subscribe((authData) => { 
      let user: firebase.User = authData.auth; 
      console.log(user); 
    }); 

aber das eine funktioniert (wenn nicht null) und die Andere können sich nicht erneut authentifizieren.

+0

helfen können Warum versuchen Sie zu 'reauthenticate' wenn Sie versuchen, zu' login'? Wie authentifizierst du dich während eines "Login" Prozesses? – Rexford

Antwort

0

Attention gibt es eine neue Version AngularFire. (4.0.0)

In der neuen Version alle Module bis aufgeteilt sind. Das heißt, müssen Sie die AngularFireAuth

 

    constructor(afAuth: AngularFireAuth) { 
     afAuth.authState.subscribe(auth => { 
      if(auth) { 
      console.log('logged in'); 
      } else { 
      console.log('not logged in'); 
      } 
     }); 
    } 

Hoffnung verwenden ich

Verwandte Themen