знак входа в угловую пожарную базу в Inic Redirect - PullRequest
0 голосов
/ 24 декабря 2018

У меня есть ионное приложение, которое требует входа в Google.код выглядит следующим образом:

import { AngularFireAuth } from 'angularfire2/auth';
import * as firebase from 'firebase/app';
import AuthProvider = firebase.auth.AuthProvider;
constructor(
        private storage: Storage,
        private plt: Platform,
        private afAuth: AngularFireAuth
    ) {
        afAuth.authState.subscribe(user => {
            this.user = user;
        });
        this.plt.ready().then(() => this.checkToken());
    }
private oauthSignIn(provider: AuthProvider) {
        if (!(<any>window).cordova) {
            return this.afAuth.auth.signInWithPopup(provider).then(res => {
                this.storage
                    .set(TOKEN_KEY, res.user.refreshToken)
                    .then(result => {
                        this.authenticationState.next(true);
                    });
            });
        } else {
            return this.afAuth.auth.signInWithRedirect(provider).then(() => {
                return this.afAuth.auth
                    .getRedirectResult()
                    .then(result => {
                        console.log(result);
                        const that = this;
                        this.storage
                            .set(TOKEN_KEY, result.user.refreshToken)
                            .then(res => {
                                that.authenticationState.next(true);
                            });
                    })
                    .catch(function(error) {
                        alert(error.message);
                    });
            });
        }
    }

здесь, signInWithPopup работает, но не signInWithRedirect.

Я проверил это в браузере, и я получаю информацию о пользователе и все.

Но нет информации о последней else функциональности, которую я отдельно проверил.

Но реальная проблема в том, что оба метода не перенаправляют на страницу приложения после получения разрешения.

Второй открывает браузер в мобильном телефоне после нажатия на кнопку входа.Но перенаправляйте обратно в браузер, а не в приложение.

То же самое касается и первого оператора if.

Пожалуйста, помогите мне решить эту проблему.

Если большенужны подробности, я предоставлю их для вас.

Ответы [ 3 ]

0 голосов
/ 25 декабря 2018

Если вы хотите просто перенаправить страницу после входа в систему, то вы можете использовать это ...

this.fAuth.authState
        .subscribe(
          user => {
            if (user) {
              this.rootPage = HomePage;
            } else {
              this.rootPage = LoginPage;
            }
          },
          () => {
            this.rootPage = LoginPage;
          }
        );

поместите этот код в файл app.component.ts

0 голосов
/ 26 декабря 2018

По сути, я не получил ни одного ответа, упомянутого здесь, работающего, и то, что @luis сказал, может быть правильным, это не сработало для меня.

Поэтому я решил пойти с плагином google plus в ionic,это помогло мне. google plus для ionic v4

0 голосов
/ 24 декабря 2018

Это происходит потому, что приложение должно смотреть перенаправленную ссылку.Потому что метод signInWithRedirect перенаправляет ссылку, зарегистрированную на консоли Firebase.Итак, вам понадобится хитрость для просмотра браузера, если текущим URL является зарегистрированный redirect_uri.

Путь к этому объяснен здесь .В основном вам следует установить Universal Links и некоторые другие плагины Cordova.

...