Aller au contenu

Apple login sur Android

GitHub

La connexion Apple sur Android est complexe. Apple ne propose aucun support officiel pour Sign in with Apple sur Android, la solution est donc un peu détournée.

Android utilise actuellement des onglets Chrome pour afficher un site OAuth2. Cette approche présente les défis suivants :

  • Configuration difficile
  • Un backend est requis

Utilisons un diagramme pour expliquer le flux sur Android :

Maintenant que vous connaissez les défis et le flux, commençons la configuration.

  1. Connectez-vous au Portail Apple Developer.

  2. Cliquez sur Identifiers.

    Section Identifiers du portail Apple Developer

    Vous devriez voir un écran semblable à celui-ci :

    Écran Identifiers du portail Apple Developer
    1. Vérifiez que ce champ indique App IDs
    2. Assurez-vous de pouvoir trouver votre App ID.
  3. Assurez-vous que la Sign in with Apple capability est activée pour votre application

    1. Cliquez sur votre application Sélectionnez votre application dans la liste
    2. Vérifiez que la Sign in with Apple capability est activée Case Sign in with Apple capability activée
    3. Si elle n'est pas activée, activez-la.
  4. Retournez à tous les All Identifiers

    Bouton de navigation All Identifiers
  5. Cliquez sur App Ids et allez dans Services IDs

    Navigation vers la section Service IDs
  6. Créer un nouvel identifiant

    1. Cliquer sur le bouton plus

      Bouton Add new service ID
    2. Sélectionnez Servcice IDs et cliquez sur Continue

      Sélection de l'option Service IDs
    3. Saisir une description et un identifiant, puis valider Continuie.

      Saisie des détails du service ID
    4. Veuillez vérifier les détails et cliquer Register

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

      Sélection de l'ID de service nouvellement créé
    6. Activer le Sign in with Apple option

      Activer Sign in with Apple pour l'ID de service
    7. Configurez la Sign In with Apple

      Configurer le bouton pour Sign in with Apple
    8. Assurez-vous que le Primary App ID est configuré sur l'App ID défini à l'étape précédente

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

      Configurer les champs domaine et URL de retour
    10. Confirmez les données et cliquez sur Done

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

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

      Bouton Enregistrer pour la configuration du service
  1. Retour à tout All Identifiers

    Bouton de navigation Identifiants
  2. Cliquez sur Keys

    Section Keys du portail Apple Developer
  3. Cliquez sur l'icône plus

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

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

    Activation et configuration de Sign in with Apple pour la clé
  6. Sélectionnez l'App ID principal, puis appuyez sur Save

    Sélection de l'App ID 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é.

    Key ID and download button screen
  10. Retrouvez la clé téléchargée et enregistrez-la dans le dossier 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. Accéder à ce site web et faire défiler vers le bas

  2. Trouvez le Team ID

    Emplacement du Team ID dans le compte développeur

Configuration de la redirection de l'app

Section intitulée « Configurer la redirection de l'app »

Comme vous l'avez vu sur le diagramme, le backend effectue une étape appelée Redirect back to the app. Cela nécessite des modifications manuelles dans votre app.

  1. Modifiez le AndroidManifest.xml
    1. Ouvrez le fichier, j'utiliserai AndroidStudio

      le fichier AndroidManifest.xml dans Android Studio
    2. Trouvez le MainActivity et ajoutez le filtre Intent suivant

      Filtre Intent 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. Modifiez le MainActivity
    1. Veuillez ouvrir la MainActivity

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

      Code à ajouter à MainActivity pour gérer les 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 sa configuration impactera aussi 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 aux serveurs d'Apple
  • Une vérification JWT simple

Compte tenu de tout ce que j'ai expliqué dans ce tutoriel, voici comment env la section ressemblerait à ceci :

  • ANDROID_SERVICE_ID = Service ID
  • IOS_SERVICE_ID = App ID
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 que sur iOS. Consultez cette section pour plus d'infos. Cependant,, les initialize la méthode change légèrement.

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'App ID, cliquez sur le bouton plus

    Bouton plus pour ajouter un nouvel identifiant
  2. Sélectionnez App IDs et cliquez sur continue

    Sélection du type d'App ID
  3. Cliquez sur le type App et cliquez sur Continue

    Sélection du type d'application
  4. Saisissez la description et l'ID de l'app

    Saisie de la description de l'app et du bundle ID
  5. Activer Sign with Apple capacité

    Activation de la capability Sign in with Apple
  6. Cliquez Continue

    Bouton Continuer pour l'enregistrement de l'app
  7. Confirmez les détails et cliquez Register

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

Si vous utilisez Apple login sur Android pour planifier les flux d'authentification et de compte, le connecter à Utiliser @capgo/capacitor-social-login pour la capacité native dans Utiliser @capgo/capacitor-social-login @capgo/capacitor-social-login pour les détails 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 de l'authentification à deux facteurs.