web-dev-qa-db-fra.com

Comment obtenir l'état d'authentification / l'utilisateur actuellement connecté depuis angularfire2

J'ai une application ionic2 et j'utilise Firebase et angularFire2. Je voudrais obtenir l'état d'authentification actuel et l'objet/utilisateur d'authentification actuel à partir de Firebase en utilisant angularFire2.

Voici ce qui fonctionne jusqu'à présent - je peux authentifier l'utilisateur et m'abonner à FirebaseAuthState pour obtenir l'objet utilisateur Facebook.

  constructor(platform: Platform, private auth: FirebaseAuth) {

    auth.subscribe((user: FirebaseAuthState) => {
      if (user) {
        // I could store user in localstorage, but I'd like to see an All Firebase solution
        this.rootPage = TabsPage;
      } else {
        this.rootPage = LoginPage;
      }
    });

Maintenant, je peux simplement définir localstorage ici et mettre en cache mon objet utilisateur pour mémoriser l'état d'authentification. Cependant, je suis curieux de voir comment je peux utiliser Firebase uniquement sans que j'implémente ma propre clé de stockage local personnalisée. Je vois que Firebase stocke une clé localStorage qui lui est propre, donc sait que son connecté.

Comment puis-je obtenir l'objet auth à partir du code? De plus, j'ai essayé l'exemple répertorié dans la documentation AngularFire2 pour rendre l'état d'authentification dans le modèle - mais cela me donne une erreur.

import {FirebaseAuth} from 'angularfire2';
@Component({
  selector: 'auth-status',
  template: `
    <div *ng-if="auth | async">You are logged in</div>
    <div *ng-if="!(auth | async)">Please log in</div>
  `
})
class App {
  constructor (@Inject(FirebaseAuth) public auth: FirebaseAuth) {}
}
11
MonkeyBonkey

l'état d'authentification actuel est disponible à partir du FirebaseAuth injecté. Vous pouvez obtenir les données d'authentification réelles auth.getAuth()

Voir: https://github.com/angular/angularfire2/blob/master/src/providers/auth.ts#L99

4
Aaron Saunders
  1. Importer: import { AngularFireAuth } from 'angularfire2/auth';
  2. Injecter: constructor(public afAuth: AngularFireAuth) { }
  3. Vérifier:

    this.afAuth.authState.subscribe(res => {
      if (res && res.uid) {
        console.log('user is logged in');
      } else {
        console.log('user not logged in');
      }
    });
    
24
Csaba

maintenant, pour obtenir les informations utilisateur, vous devez vous abonner pour obtenir les informations d'authentification. Ex

  constructor(public af: AngularFire) {
    this.af.auth.subscribe(auth => console.log(auth));// user info is inside auth object
  }

l'objet auth sera nul si l'état d'authentification n'existe pas

15
afmeva