首页 > 解决方案 > IONIC 项目中未定义 SignInWithApple

问题描述

设想:

我正在尝试通过 Apple 和Firebase我的 IONIC 4 应用程序添加标识。

所以我进行了安装:

npm i cordova-plugin-apple-login

ionic cordova plugin add cordova-plugin-apple-login

然后我在我的服务中添加:

import {AngularFireAuth} from '@angular/fire/auth';
import {Facebook} from '@ionic-native/facebook/ngx';
import * as firebase from 'firebase';
import {GooglePlus} from '@ionic-native/google-plus/ngx';

declare var SignInWithApple: any;

export class AuthService {

  constructor(public fAuth: AngularFireAuth,
              public fb: Facebook,
              public google: GooglePlus) {}

    async loginApple() {

        SignInWithApple.request({requestedScopes: [ SignInWithApple.Scope.Email, SignInWithApple.Scope.FullName ]})
            .then((appleCredential) => {
                const credential =  new firebase.auth.OAuthProvider('apple.com').credential(appleCredential.identityToken);
                this.fAuth.auth.signInWithCredential(credential)
                    .then((response) => {
                        console.log('Login successful');
                    })
                    .catch((error) => {
                        console.log(error);
                        alert('error:' + JSON.stringify(error));
                    });
            });
    }


}

问题:

这是我在互联网上随处可见的方法,但它给了我错误:

SignInWithApple is not defined

我也试过这个:

设想:

ionic cordova plugin add cordova-plugin-sign-in-with-apple

npm i --save @ionic-native/sign-in-with-apple

import {AngularFireAuth} from '@angular/fire/auth';
import {Facebook} from '@ionic-native/facebook/ngx';
import * as firebase from 'firebase';
import {GooglePlus} from '@ionic-native/google-plus/ngx';
import { SignInWithApple,
    AppleSignInResponse,
    AppleSignInErrorResponse,
    ASAuthorizationAppleIDRequest } from '@ionic-native/sign-in-with-apple';

export class AuthService {

  constructor(public fAuth: AngularFireAuth,
              public fb: Facebook,
              public google: GooglePlus) {}

    async loginApple() {

            try {
                const appleCredential: AppleSignInResponse = await SignInWithApple.signin({
                    requestedScopes: [
                        ASAuthorizationAppleIDRequest.ASAuthorizationScopeFullName,
                        ASAuthorizationAppleIDRequest.ASAuthorizationScopeEmail
                    ]
                });
                const credential = new firebase.auth.OAuthProvider('apple.com').credential(
                    appleCredential.identityToken
                );
                this.fAuth.auth.signInWithCredential(credential)
                    .then((res) => {
                        console.log('Login successful', res);
                    })
                    .catch((error) => {
                        console.log(error);
                    });
            } catch (error) {
                console.log(error);
            }
    }
}

问题:

Class not found

我在文档中找不到太多解释...

在这两个我都有一个我不明白的错误,保持的方法是什么以及如何纠正它?

一个主意 ?

谢谢

标签: firebaseionic-frameworkionic4

解决方案


推荐阅读