Passer à la navigation principale

L'authentification Apple sur Android

GitHub

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

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

  • Configuration difficile
  • Un serveur est requis

Comprendre le flux sur Android.

Comprendre le flux sur Android.

Je vous propose de utiliser un diagramme pour expliquer le flux sur Android :

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

  1. Connectez-vous au Portail du développeur Apple.

  2. Cliquez sur Identifiers.

    Section Identifiants du Portail du développeur Apple

    Vous devriez voir une page qui ressemble à ceci :

    Écran Identifiants du Portail du développeur Apple
    1. Assurez-vous que ce champ dit App IDs
    2. Assurez-vous de trouver votre ID d'application.
  3. Cliquez sur votre application Sign in with Apple Sélectionnez votre application dans la liste

    1. Assurez-vous que la capability
    2. capacité Sign in with Apple enabled Capacité de connexion Apple activée
    3. Si elle n'est pas activée, activez-la.
  4. Retour à tous All Identifiers

    Tous les identifiants de navigation
  5. Cliquez sur App Ids et allez à Services IDs

    Section des identifiants de services de navigation
  6. Créer un nouveau identifiant

    1. Cliquez sur le bouton plus

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

      Sélectionner les identifiants de service
    3. Entrer une description et des identifiants et cliquer 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 nouveau service créé

      Sélectionner le nouveau ID de service créé
    6. Activer la Sign in with Apple option

      Activation de la connexion avec Apple pour l'ID de service
    7. Configurez le Sign In with Apple

      Configurez le bouton pour vous connecter avec Apple
    8. Assurez-vous que le Primary App ID est défini sur l'ID d'application configuré dans l'étape précédente

      Menu déroulant de l'ID d'application principal
    9. Ajoutez le domaine sur lequel vous allez héberger votre backend.

      Champs de domaine et URL de retour
    10. Confirmer les données et cliquez sur Done

      Confirmation de la configuration de l'URL de retour et du domaine
    11. Cliquez sur Continue

      Bouton Continue pour la configuration du service
    12. Cliquez sur Save

      Bouton Enregistrer pour la configuration du service
  1. Retournez à tous All Identifiers

    Tous les Identificateurs bouton de navigation
  2. Cliquez sur Keys

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

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

    Champ de saisie du nom de 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, puis appuyez Save

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

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

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

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

    Fichier clé téléchargé

Pour utiliser Login with Apple sur Android, vous devez obtenir le Team IDCela sera utilisé dans le backend.

  1. Allez à ce site web et faites défiler vers le bas

  2. Trouvez la Team ID

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

Comme vous l'avez vu dans le diagramme, le serveur effectue une étape appelée Redirect back to the appCela 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

      Intent filter code to add in 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 le fichier MainActivity.java dans Android Studio MainActivity

      Ajoutez les éléments suivants :
    2. Add the following code:

      Code to add to MainActivity for handling deep links
      @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
  • Une façon 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 faire env La section ressemblerait à ceci :

  • 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

    Ajouter un nouveau identifiant plus
  2. Sélectionner App IDs et cliquez sur Continuer

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

    Sélectionner le type d'application
  4. Entrez la description et l'ID d'application

    Entrer la description de l'application et l'ID de l'application
  5. Activer Sign with Apple capacité

    Activer la capacité de connexion avec Apple
  6. Cliquez Continue

    Continuez avec la saisie des informations de l'application
  7. Confirmez les détails et cliquez Register

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

Continuez de l'authentification Apple sur Android

Sous-titre “Continuez de l'authentification Apple sur Android”

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