Ionic Firebase Google Войти - PullRequest
0 голосов
/ 01 мая 2018

Я новичок в разработке приложений, но я создаю приложение с помощью Google Login, подключенного к моей Firebase. Я могу подключиться и показать идентификатор пользователя с успехом, но я хочу перейти на другую страницу (HomePage) при успешном входе в систему.

import { HomePage } from "../home/home";
import { RegisterPage } from "../register/register";

import * as firebase from "firebase/app";
import { AngularFireAuth } from "angularfire2/auth";
import { Observable } from "rxjs/Observable";
import { Router } from "@angular/router";

import { GooglePlus } from "@ionic-native/google-plus";
import { Platform } from "ionic-angular";



@IonicPage()
@Component({
  selector: "page-login",
  templateUrl: "login.html"
})
export class LoginPage {
  user: Observable<firebase.User>;

  constructor(
    public nav: NavController,
    public navParams: NavParams,
    public forgotCtrl: AlertController,
    public menu: MenuController,
    public toastCtrl: ToastController,
    private afAuth: AngularFireAuth,
    private gplus: GooglePlus,
    private router: Router,
    private platform: Platform
  ) {
    this.menu.swipeEnable(false);
    this.user = this.afAuth.authState;
  }
    async nativeGoogleLogin(): Promise<void> {
    try {
      const gplusUser = await this.gplus.login({
        webClientId:
          "MyClientWebAPI",
        offline: true,
        scopes: "profile email"
      });

      return await this.afAuth.auth.signInWithCredential(
        firebase.auth.GoogleAuthProvider.credential(gplusUser.idToken)
//Here is where i try to inject the router.
        .then(success => {
          this.router.navigate(["HomePage"]);
        })
      );
    } catch (err) {
      console.log(err);
    }
  }
 googleLogin() {
    if (this.platform.is("cordova")) {
      this.nativeGoogleLogin();
    } else {
      this.webGoogleLogin();
    }
  }

Я пытался внедрить некоторый код в аутентификацию, используя затем (success => ....), но не могу заставить его работать.

Может кто-нибудь помочь с кодом?

Спасибо

Ответы [ 2 ]

0 голосов
/ 02 мая 2018
 return await this.afAuth.auth
        .signInWithCredential(
          firebase.auth.GoogleAuthProvider.credential(gplusUser.idToken)
        )
        .then(data => {
          this.nav.setRoot(HomePage);
        });
    } catch (err) {
      console.log(err);
    }
  }

async webGoogleLogin(): Promise<void> {
        try {
          const provider = new firebase.auth.GoogleAuthProvider();
          const credential = await this.afAuth.auth
            .signInWithPopup(provider)
            .then(data => {
              this.nav.setRoot(HomePage);
            });
        } catch (err) {
          console.log(err);
        }   }
0 голосов
/ 01 мая 2018

Может быть, вы можете сделать это:

 async loginUser() {
    this.user.email = this.myForm.value.email;
    this.user.password = this.myForm.value.password;
    this.presentLoading();
    try {
      this.authService
        .signInWithEmailAndPassword(this.user)
        .then(data => {
          this.navCtrl.setRoot(ListaPage);
        })
        .catch(e => {
          console.log("error");
        });
    } catch (e) {
      console.error(e);
    }
  }

и в AuthService вы можете вставить логин входа в систему Google.

...