Ionic 2 google signin с firebase - angular


0

im получить некоторые проблемы с проверкой firebase и поставщиком google. Я пытаюсь подписаться с поставщиком google (это работает отлично), но затем я хочу перенаправить на мою домашнюю страницу, но я что-то не так понял.

У меня есть поставщик auth:

import { Injectable } from @angular/core;
import firebase from firebase;


@Injectable()
export class AuthData {
  // Here we declare the variables well be using.
  public fireAuth: any;
  googleProvider: any;

  constructor() {
    this.fireAuth = firebase.auth(); // We are creating an auth reference.

    // Google Provider for Google Auth
    this.googleProvider = new firebase.auth.GoogleAuthProvider();
  }

  /**
   * This function doesnt take any params, it just logs the current user out of the app.
   */
  logoutUser(): any {
    return this.fireAuth.signOut();
  }

  /**
   * This function doesnt take any params, it just signin the current user
   * using google provider.
   */
  googleSignin(): any {
    return this.fireAuth.signInWithRedirect(this.googleProvider);
  }
}

Это мой app.component:

[all imports here]

@Component({
  templateUrl: app.html
})
export class MyApp {
  @ViewChild(Nav) nav: Nav;

  rootPage: any = Home;
  constructor(public platform: Platform) {
    this.initializeApp();
  }

  initializeApp() {
    firebase.initializeApp(FirebaseConfig);

    firebase.auth().onAuthStateChanged((user) => {
      if (!user) {
        this.nav.setRoot(Home);
      } else {
        this.nav.setRoot(Menu);
      }
    });

    this.platform.ready().then(() => {
      StatusBar.styleDefault();
    });
  }
}

И это мой home.ts:

[some imports here]

@Component({
  templateUrl: home.html,
})
export class Home {

  constructor(public navCtrl: NavController, public authData: AuthData) {}

  registerUserWithGoogle() {
    this.authData.googleSignin();
  }
}

Итак, когда я пытаюсь войти с Google из home.html(что его представление на app.html) в menu.html, я получил какое-то странное поведение. У меня есть скриншоты.

app.html:

<ion-nav [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>

home.html:

<ion-content class="home">
  <div class="logo">
    <div class="logo-icon">
      <img src="assets/img/logotipo.png" alt="">
    </div>
  </div>
  <button ion-button block color="danger" class="google-btn" (click)="registerUserWithGoogle()">
    Log In with Google
  </button>
</ion-content>

Это то, что я получаю, когда я вхожу в систему:

pic1

И если я нажму на стрелку, я получу это:

pic2

но теперь я не могу щелкнуть по sidemenu, и я не знаю, может ли это для гнездования двух ионных представлений или чего-то еще.

Спасибо

Источник
  •  124
  •  1
  • 30 апр 2020 2020-04-30 18:03:56

1 ответ

0

Я прочитал комментарии, так что теперь это вопрос из 2 частей:

1) Для Google Auth методы signInWithRedirect() и signInWithPopUp() пока не работают в кордово-ионных приложениях.

Вам нужно будет использовать плагин Google для получения учетных данных для входа, а затем вы можете передать их в firebase.auth.signInWithCredentials()

2) Об ошибке, отправляющей вас на главную страницу:

Там есть странная ошибка в Ionic navCtrl, которая не нажимает на страницу после ее возвращения с пользователем:

firebase.auth().onAuthStateChanged((user) => {
  if (!user) {
    this.nav.setRoot(Home);
  } else {
    this.nav.setRoot(Menu);
  }
});

Я получил эту работу, просто объявив rootPage: any = Menu;, а затем сделаю это вместо:

firebase.auth().onAuthStateChanged((user) => {
  if (!user) {
    this.nav.setRoot(Home);
  }
});
  • 30 апр 2020 2020-04-30 18:03:57