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) {}
}
現在の認証状態は、挿入されたFirebaseAuth
から入手できます。実際の認証データを取得できますauth.getAuth()
参照: https://github.com/angular/angularfire2/blob/master/src/providers/auth.ts#L99
import { AngularFireAuth } from 'angularfire2/auth';
_constructor(public afAuth: AngularFireAuth) { }
小切手:
_this.afAuth.authState.subscribe(res => {
if (res && res.uid) {
console.log('user is logged in');
} else {
console.log('user not logged in');
}
});
_
ユーザー情報を取得するには、認証情報を取得するためにサブスクライブする必要があります。例
constructor(public af: AngularFire) {
this.af.auth.subscribe(auth => console.log(auth));// user info is inside auth object
}
認証状態が存在しない場合、認証オブジェクトはnullになります