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

Dan*_*iel 11 ios cordova ionic-framework cordova-plugins

我有一个现有的 Ionic 3 应用程序,它允许用户使用他们的 Facebook 或 Google 帐户登录。该应用程序与 ASP.NET Core 网站和 API 进行交互。我的理解是,在某些时候,Apple 将要求此类应用程序支持“使用 Apple 登录”

对于 Facebook 和 Google,有cordova 插件(facebook4 和googleplus),然后是一些服务器端代码来处理OAuth/OpenID Connect。我没有找到任何用于“使用 Apple 登录”的cordova 插件。我找到了一篇关于如何实现 api/web 方面的文章,但是我对 Ionic 方面不太清楚。如何在基于 ionic 的 iOS 应用程序中启用“使用 Apple 登录”?是否不需要插件(即都可以使用 javascript 或应用程序内浏览器完成)?我知道应用内浏览器被 Google 的身份验证页面阻止,似乎任何身份验证都首选更“本机”的方法。

我知道这是新的,但如果 Apple 开始要求它,似乎更多的开发人员会遇到这个问题。我是否误解了很快就需要这样做?

Cyr*_*het 4

You could use this Ionic wrapper : https://www.npmjs.com/package/@ionic-native/sign-in-with-apple

Install the plugin and the wrapper :

ionic cordova plugin add cordova-plugin-sign-in-with-apple
npm i --save @ionic-native/sign-in-with-apple
Run Code Online (Sandbox Code Playgroud)

Import :

import { SignInWithApple, AppleSignInResponse, AppleSignInErrorResponse, ASAuthorizationAppleIDRequest } from '@ionic-native/sign-in-with-apple';
Run Code Online (Sandbox Code Playgroud)

An example of use (with 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);
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)