Aller directement au contenu

Connexion Apple sur Android

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

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

  • Configuration difficile
  • Un serveur backend est requis

Laissez-moi utiliser un diagramme pour expliquer le flux sur Android :

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

  1. Se connecter à 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 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 Sélectionnez votre application de la liste
    2. Assurez-vous que la Sign in with Apple capacité est activée Case de sélection de la capacité de connexion Apple activée
    3. Si elle ne l'est pas, activez-la.
  4. Retournez à tous All Identifiers

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

    Navigation vers la section des identifiants de services
  6. Créer un nouveau identifiant

    1. Cliquez sur le bouton plus

      Ajouter un ID de service
    2. Sélectionner Servcice IDs et cliquez Continue

      Sélectionner les options d'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 de service créé récemment

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

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

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

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

      Champs de configuration du domaine et de l'URL de retour
    10. Confirmer les données et cliquer Done

      Confirmation de domaine et de configuration 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. Retourner à tous les 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 d'ajout de nouvelle clé
  4. Nommez votre clé

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

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

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

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

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

    Écran de l'ID de la clé et du bouton de téléchargement
  10. Trouvez la clé téléchargée et enregistrez-la dans le dossier arrière-plan.

    Fichier de clé téléchargée

Pour utiliser Login with Apple sur Android, vous devez obtenir le Team IDIl sera utilisé dans l'arrière-plan.

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

  2. Trouvez la localisation de l'ID d'équipe dans le compte de développeur Team ID

    Configuration de la redirection de l'application

Section intitulée « Configuration de la redirection de l'application »

Comme vous l'avez vu dans le diagramme, le backend effectue une étape appelée

Cela nécessite des modifications manuelles dans votre application. Redirect back to the appModifier le

  1. Ouvrez le fichier, je vais utiliser AndroidManifest.xml
    1. Fichier AndroidManifest.xml dans Android Studio AndroidStudio

      Trouvez le
    2. et ajoutez le filtre d'intention suivant MainActivity Filtre d'intention __CAPGO_KEEP_0__ à ajouter dans MainActivity

      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 lignes suivantes __CAPGO_KEEP_0__
    2. code pour ajouter à MainActivity pour gérer les liens profonds

      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 affectera également l'IOS. Un exemple de backend est fourni L'exemple fournit les éléments suivants :

Une base de données JSON simple

  • Une base de données JSON simple
  • Une méthode pour 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 env ce 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 La fonction ne change pas, c'est la même chose que sur IOS. Veuillez consulter cette section pour plus d'informations. Cependantla 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
  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 de l'application

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

    Activer la capacité d'inscription avec Apple
  6. Cliquez Continue

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

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