Passer à la navigation

Authentification Apple sur Android

GitHub

Le login Apple sur Android est un peu hacky. Apple n'a pas de support officiel pour Sign in with Apple sur Android, donc la solution est légèrement hacky.

L'Android utilise actuellement une fenêtre de Chrome pour afficher un site Web OAuth2. Cette approche présente les défis :

  • Configuration difficile
  • Un backend est requis

Utilisez un diagramme pour expliquer le flux sur Android :

Maintenant que vous êtes conscient des défis et du flux, commençons la configuration.

  1. Se connecter à Portail du développeur Apple.

  2. Cliquez sur Identifiers.

    Portail des développeurs Apple Identifiants section

    Vous devriez voir une page qui ressemble à ceci :

    Écran des identifiants du portail des développeurs Apple
    1. Assurez-vous que ce champ dit App IDs
    2. Assurez-vous que vous pouvez trouver votre ID d'application.
  3. Assurez-vous que la Sign in with Apple capacité est activée pour votre application

    1. Cliquez sur votre application Selectionnez votre application dans la liste
    2. Assurez-vous que la Sign in with Apple capacité est activée Case de sélection de la capacité Sign in with Apple
    3. Si elle n'est pas activée, activez-la.
  4. Retour à tous All Identifiers

    Bouton de navigation vers les Identifiants de tous
  5. Cliquez sur App Ids et allez à Services IDs

    Navigation vers la section Identifiants de services
  6. Créez un nouveau identifiant

    1. Cliquez sur le bouton plus

      Bouton d'ajout d'ID de service
    2. Sélectionner Servcice IDs et cliquez Continue

      Option de sélection des ID de service
    3. Entrez une description et des identifiants et cliquez Continuie.

      Entrer les détails de l'ID de service
    4. Veuillez vérifier les détails et cliquez sur Register

      Confirmation de l'enregistrement de l'ID de service
    5. Cliquez sur le service ID nouvellement créé

      Sélectionner l'ID de service créé récemment
    6. Activer l' Sign in with Apple option

      Activer l'authentification avec Apple pour l'ID de service
    7. Configurer l' Sign In with Apple

      Configurer le bouton d'authentification avec Apple
    8. Vérifiez que l' Primary App ID est défini sur l'ID d'application configuré dans l'étape précédente

      Définir le menu déroulant ID d'application principal
    9. Ajoutez le domaine sur lequel vous allez héberger votre backend.

      Définir les champs domaine et URL de retour
    10. Confirmation de la configuration de l'URL de retour et du domaine Done

      Cliquez sur
    11. Bouton Continuer pour la configuration du service Continue

      Cliquez sur
    12. Bouton Continuer Save

      Bouton de sauvegarde pour la configuration du service
  1. Retour à tous All Identifiers

    Bouton de navigation Identifiants
  2. Cliquez sur Keys

    Section Clés dans le Portail du développeur Apple
  3. Cliquez sur l'icône plus

    Bouton Ajouter une nouvelle clé
  4. Nommez votre clé

    Champ de saisie du nom de la clé
  5. Sélectionnez Sign in with Apple et cliquez Configure

    Activer et configurer l'authentification avec Apple pour la clé
  6. Sélectionnez l'ID d'application principal, et appuyez sur Save

    Sélectionner l'ID d'application principal pour la clé
  7. Cliquez sur Continue

    Le bouton Continuer pour la configuration de la clé
  8. Cliquez sur Register

    Bouton d'inscription pour la création de clé
  9. Copiez l'ID de clé et téléchargez la clé.

    Écran de l'ID de clé et du bouton de téléchargement
  10. Trouvez le fichier téléchargé et enregistrez-le dans le dossier du backend.

    Fichier de clé téléchargé

Pour utiliser Login with Apple sur Android, vous devez récupérer le Team ID . Il sera utilisé dans le backend.

  1. Allez à ce site web et descendez

  2. Trouvez la Team ID

    localisation de l'ID de l'équipe dans le compte développeur

Comme vous avez vu dans le diagramme, le backend effectue une étape appelée Redirect back to the app. Cette opération nécessite des modifications manuelles dans votre application.

  1. Modifier le AndroidManifest.xml
    1. Ouvrez le fichier, je vais utiliser AndroidStudio

      le fichier AndroidManifest.xml dans Android Studio
    2. Trouvez le MainActivity et ajoutez le filtre d'intention suivant

      Filtre d'intention code à ajouter dans MainActivity
      <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="capgo-demo-app" android:host="path" />
      </intent-filter>
  2. Modifier le MainActivity
    1. Veuillez ouvrir MainActivity

      le fichier MainActivity.java dans Android Studio
    2. Ajoutez le code: suivant

      Code pour ajouter à MainActivity pour gérer les liens profonds
      @Override
      protected void onNewIntent(Intent intent) {
      String action = intent.getAction();
      Uri data = intent.getData();
      if (Intent.ACTION_VIEW.equals(action) && data != null) {
      PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");
      if (pluginHandle == null) {
      Log.i("Apple Login Intent", "SocialLogin login handle is null");
      return;
      }
      Plugin plugin = pluginHandle.getInstance();
      if (!(plugin instanceof SocialLoginPlugin)) {
      Log.i("Apple Login Intent", "SocialLogin plugin instance is not SocialLoginPlugin");
      return;
      }
      ((SocialLoginPlugin) plugin).handleAppleLoginIntent(intent);
      return;
      }
      super.onNewIntent(intent);
      }

Un backend est requis pour Android, mais la configuration d'un backend impactera également IOS. Un exemple de backend est fourni ici

Cet exemple fournit les éléments suivants :

  • Une base de données JSON simple
  • Un moyen de demander le JWT auprès des serveurs d'Apple
  • Une vérification JWT simple

Étant donné tout ce que j'ai dit dans ce tutoriel, voici comment cette env section ressemblerait :

  • ANDROID_SERVICE_ID = ID de service
  • IOS_SERVICE_ID = ID d'application
env: {
PRIVATE_KEY_FILE: "AuthKey_U93M8LBQK3.p8",
KEY_ID: "U93M8LBQK3",
TEAM_ID: "UVTJ336J2D",
ANDROID_SERVICE_ID: "ee.forgr.io.ionic.starter.service2",
IOS_SERVICE_ID: "me.wcaleniewolny.test.ionic.vue",
PORT: 3000,
REDIRECT_URI: "https://xyz.wcaleniewolny.me/login/callback",
BASE_REDIRECT_URL: "capgo-demo-app://path"
}

L'utilisation de la login fonction ne change pas, c'est la même chose que pour IOS. Veuillez consulter cette section pour plus d'informations. Cependant, la initialize méthode change un peu.

await SocialLogin.initialize({
apple: {
clientId: 'ee.forgr.io.ionic.starter.service2',
redirectUrl: 'https://appleloginvps.wcaleniewolny.me/login/callback'
}
})
  1. Si vous n'avez pas encore d'ID d'application, cliquez sur le bouton plus

    Bouton plus d'identification d'application
  2. Sélectionner App IDs Cliquez sur continuer

    Sélectionner le type d'ID d'application
  3. Cliquez sur le type App Sélectionner le type d'application Continue

    Entrer la description et l'ID d'application
  4. Entrer la description de l'application et l'ID de l'application

    __CAPGO_KEEP_0__
  5. Activer Sign with Apple capacité

    Activer la capacité Sign in with Apple
  6. Cliquez Continue

    Bouton Continue pour l'enregistrement de l'application
  7. Confirmer les détails et cliquez Register

    Confirmation des détails d'enregistrement de l'application

Si vous utilisez Authentification Apple sur Android pour planifier l'authentification et les flux de compte, connectez-le avec Utiliser @capgo/capacitor-login-social pour la capacité native dans Utiliser @capgo/capacitor-login-social, @capgo/capacitor-login-social pour le détail d'implémentation dans @capgo/capacitor-login-social, @capgo/capacitor-passkey pour le détail d'implémentation dans @capgo/capacitor-passkey, @capgo/capacitor-biométrique-native pour le détail d'implémentation dans @capgo/capacitor-biométrique-native, et L'authentification à deux facteurs pour le détail d'implémentation dans L'authentification à deux facteurs.