首页 > 解决方案 > 离子角+电容器+火力。使用新的 Capacitor 3 和 Firebase 9 帮助迁移 Google 登录代码

问题描述

我希望有人可以帮助我如何使这个旧的firebase google登录代码在新的电容器3和firebase 9中工作。身份验证导入不再起作用。

这是我的 auth.service.ts 中的代码:

import {
  Injectable
} from '@angular/core';
import {
  AngularFireAuth
} from '@angular/fire/compat/auth';
import {
  AngularFirestore,
  AngularFirestoreDocument
} from '@angular/fire/compat/firestore';
import '@codetrix-studio/capacitor-google-auth';
import {
  Plugins
} from '@capacitor/core';
import {
  auth
} from 'firebase/app';
import 'firebase/auth';

export class AuthService {
  constructor(private afAuth: AngularFireAuth, private afs:
    AngularFirestore) {}

  async googleSignup() {
    const googleUser = await Plugins.GoogleAuth.signIn(null) as any;
    const credential = auth.GoogleAuthProvider.credential(
      googleUser.authentication.idToken);
    const afUser = await this.afAuth.signInWithCredential(credential);
    return this.updateUserData(
      afUser.user,
      googleUser.givenName,
      googleUser.imageUrl
    );
  }

这里是我的 Introduction.page.ts 代码,其中 auth.service.ts 被调用:

import {
  AuthService
} from '../../services/auth.service';
import {
  Router
} from '@angular/router';

export class IntroductionPage implements OnInit {
  constructor(
    private auth: AuthService,
    private router: Router
  ) {}

  openGoogleSignup() {
    this.auth.googleSignup().then((res) => {
      this.router.navigateByUrl('/app');
    }, err => {
      // Canceled the sign up
    });
  }
}

我已经为 GoogleAuth 尝试了下面的新导入方法,但我无法跟进旧代码中的凭据。我收到错误“未处理的承诺拒绝:无法读取未定义的属性(读取'getAuthInstance')”

import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth';

感谢您花时间阅读本文,我希望有人可以指导我使用这种新方法。今天是个好日子。

标签: angularfirebaseionic-frameworkmigrationcapacitor

解决方案


对于所有将来可能遇到类似问题的人。感谢mr.grimm,我设法找到了解决方案。进口应该是这样的:


    import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth';
    import firebase from 'firebase/compat/app';

调用谷歌登录的方法是这样的:


    async googleSignup() {
        await GoogleAuth.init();
        const googleUser = await GoogleAuth.signIn();
        const credential = firebase.auth.GoogleAuthProvider.credential();
    }

推荐阅读