如何在Ionic 3应用程序中启用“使用Apple Id登录”

时间:2019-09-06 16:00:26

标签: ios cordova ionic-framework cordova-plugins

我有一个现有的Ionic 3应用程序,允许用户使用其Facebook或Google帐户登录。该应用程序与ASP.NET Core网站和api交互。我的理解是,Apple有时会要求此类应用程序支持"Sign in with Apple"

在Facebook和Google中,有cordova插件(facebook4和googleplus),然后是一些服务器端代码来处理OAuth / OpenID Connect。我没有找到“使用Apple登录”的任何cordova插件。我找到了an article about how to implement the api/web side of this,但是在离子方面我不太清楚。如何在基于离子的iOS应用中启用“使用Apple登录”?是否不需要插件(即可以全部使用javascript或应用内浏览器完成)?我知道应用内浏览器被Google的身份验证页面阻止,并且似乎对任何身份验证而言,首选“本地”方法。

我知道这是新的,但是如果苹果公司开始要求它的话,似乎更多的开发人员会遇到这个问题。我是否误解了有关此要求的提示?

2 个答案:

答案 0 :(得分:4)

您可以使用以下离子包装器:https://www.npmjs.com/package/@ionic-native/sign-in-with-apple

安装插件和包装器:

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

导入:

import { SignInWithApple, AppleSignInResponse, AppleSignInErrorResponse, ASAuthorizationAppleIDRequest } from '@ionic-native/sign-in-with-apple';

使用示例(带有Firebase):

  async loginWithApple(): Promise<void> {
    if (this.platform.is('cordova')) {
      try {
        const appleCredential: AppleSignInResponse = await SignInWithApple.signin({
          requestedScopes: [
            ASAuthorizationAppleIDRequest.ASAuthorizationScopeFullName,
            ASAuthorizationAppleIDRequest.ASAuthorizationScopeEmail
          ]
        });
        const credential = new firebase.auth.OAuthProvider('apple.com').credential(
          appleCredential.identityToken
        );
        this.afAuth.auth.signInWithCredential(credential)
          .then((res) => {
            console.log('Login successful', res);
          })
          .catch((error) => {
            console.log(error);
          });
      } catch (error) {
        console.log(error);
      }
    }
  }

答案 1 :(得分:1)

此插件似乎可以正常工作:cordova-plugin-apple-login

此插件将在其中打开iOS Apple sigin。在对用户进行身份验证之后,您将收到包含userID和authorizationCode的响应。您可以将authorizationCode发送到后端并验证用户。

由于此插件没有ionic-native-wrapper,因此您需要添加以下内容才能使用该插件:

declare var SignInWithApple: any;