web-dev-qa-db-ja.com

angularfire2から現在の認証状態/ユーザーにログインする方法

Ionic2アプリがあり、FirebaseとangularFire2を使用しています。 angularFire2を使用してfirebaseから現在の認証状態と現在の認証オブジェクト/ユーザーを取得したいです。

これまでのところ何が機能しているのですか-ユーザーを認証し、FirebaseAuthStateにサブスクライブして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;
      }
    });

ここでlocalstorageを設定し、ユーザーオブジェクトをキャッシュして認証状態を記憶することができます。ただし、独自のカスタムローカルストレージキーを実装しなくてもFirebaseを使用できる方法を知りたいと思います。 Firebaseは独自のlocalStorageキーを保存しているため、ログインしていることがわかります。

コードから認証オブジェクトを取得するにはどうすればよいですか?さらに、AngularFire2のドキュメントにリストされている例を試して、テンプレートの認証状態をレンダリングしましたが、エラーが発生します。

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

現在の認証状態は、挿入されたFirebaseAuthから入手できます。実際の認証データを取得できますauth.getAuth()

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

4
Aaron Saunders
  1. インポート:_import { AngularFireAuth } from 'angularfire2/auth';_
  2. 注入:constructor(public afAuth: AngularFireAuth) { }
  3. 小切手:

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

ユーザー情報を取得するには、認証情報を取得するためにサブスクライブする必要があります。例

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

認証状態が存在しない場合、認証オブジェクトはnullになります

15
afmeva