Я потратил много времени, пытаясь аутентифицировать своих пользователей в Firebase с помощью учетной записи Google в моем приложении Ionic.
Я использую Ionic 4 с Angular.
Я отправляю этот вопрос и отвечаю с исследованием, которое я провел, потому что я не мог найти все, что мне нужно, в одном месте, и мне пришлось пройти через много поисков и попытаться получить желаемый результат.
Прежде всего, я попробовал 2 способа с пакетами Firebase, которые никуда меня не ведут:
Наличие поставщика Google от firebase:
import * as firebase from 'firebase';
import { auth } from 'firebase/app';
import { AngularFireAuth } from '@angular/fire/auth';
...
const provider = new auth.GoogleAuthProvider();
Первой попыткой было всплывающее окно (хотя я знаю, что это не рекомендуется):
firebase.auth().signInWithPopup(provider).then(function(result) {
Но я сразу же наткнулся на барьер Google, который говорит мне, что я использую disallowed_useragent (из-за WebView) ... так что это не вариант.
Второй - это signInWithRedirect, использующий того же поставщика:
firebase.auth().signInWithRedirect(provider).then(function(result) {
Затем пользователь перенаправляется в Chrome и логин работает хорошо, НО после этого он перенаправляется на localhost / login (URL, с которого он покинул приложение).
Так что на этом все заканчивается и логин не завершен.
Моим последним вариантом был плагин Google Plus от Ionic:
https://ionicframework.com/docs/native/google-plus
Но после следующего кода:
this.googlePlus.login({
'webClientId': 'webclientid',
'offline': true,
'scopes': 'profile email'
}).then(res => {
...
});
Ничего не произошло ... даже не было возвращено сообщение об ошибке (также использовалось с try - catch).