[AngularFire2] Auth with Firebase auth -- email

First, you need to enable the email auth in Firebase console.

Then implement the auth service:

  login(email, password) {

    return this.fromFirebaseAuthPromise(this.auth$.login({
      email, password
    },{
      method: AuthMethods.Password,
      provider: AuthProviders.Password
    }));
  }

  fromFirebaseAuthPromise(promise) {
    const subject = new Subject<any>();

    promise.then((res) => {
      subject.next(res);
      subject.complete();
    }, err => {
      subject.error(err);
      subject.complete();
    });

    return subject.asObservable();
  }

Because login method return Promise, we need to convert it to Observable. The way we do it is using 'subject'.

Controller:

  login(){
    const formValue = this.form.value;

    this.authService.login(formValue.email, formValue.password)
      .subscribe((res) => {
         this.router.navigate(['/home']);
      })
  }
原文地址:https://www.cnblogs.com/Answer1215/p/6082053.html