Googe Sign In не работает в ионном приложении для Android, где как отлично работает в веб-приложении, когда я запускаю ionic serve
.
Модуль приложения:
const firebaseConfig = {
// fire base config here copied from the console.
};
@NgModule({
declarations: [MyApp, AboutPage, ContactPage, HomePage, TabsPage],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp),
AngularFireModule.initializeApp(firebaseConfig),
AngularFireAuthModule,
ComponentsModule
],
bootstrap: [IonicApp],
entryComponents: [MyApp, AboutPage, ContactPage, HomePage, TabsPage],
providers: [
StatusBar,
SplashScreen,
{ provide: ErrorHandler, useClass: IonicErrorHandler }
]
})
export class AppModule {}
Я установил пакет cordova-support-google-services
и добавил файл google-services.json
, который загружается с консоли firebase
и помещается в каталог platforms/android/app/
.
@Injectable({ providedIn: "root" })
export class AuthService {
user$: Observable<User>;
constructor(
private afAuth: AngularFireAuth,
private afs: AngularFirestore,
private router: Router
) {
this.user$ = this.afAuth.authState.pipe(
switchMap(user => {
// Logged in
if (user) {
return this.afs.doc<User>(`users/${user.uid}`).valueChanges();
} else {
// Logged out
return of(null);
}
})
);
}
async googleSignin() {
const provider = new auth.GoogleAuthProvider();
const credential = await this.afAuth.auth.signInWithPopup(provider);
return this.updateUserData(credential.user);
}
private updateUserData(user) {
// Sets user data to firestore on login
const userRef: AngularFirestoreDocument<User> = this.afs.doc(
`users/${user.uid}`
);
const data = {
uid: user.uid,
email: user.email,
displayName: user.displayName,
photoURL: user.photoURL
};
return userRef.set(data, { merge: true });
}
async signOut() {
await this.afAuth.auth.signOut();
this.router.navigate(["/"]);
}
}
Приведенный выше код отлично работает в сети, но не работает в Android. После нажатия на кнопку в браузере Chrome открывается новая вкладка, в которой отображается логин Google, после успешной регистрации он показывает пустую белую страницу и не перенаправляется в приложение, а также в консоли Firebase. Я вижу, что пользователь не аутентифицирован.