Zum Inhalt springen

Apple-Login auf Android

GitHub

Die Apple-Authentifizierung auf Android ist hackig. Apple bietet keine offizielle Unterstützung für Sign in with Apple auf Android, also ist die Lösung etwas umgangssprachlich.

Android verwendet derzeit einen Chrome-Tab, um eine OAuth2-Website anzuzeigen. Diese Methode hat die Herausforderungen:

  • Schwierige Konfiguration
  • Ein Backend ist erforderlich

Lass mich ein Diagramm verwenden, um den Ablauf auf Android zu erklären:

Da du nun die Herausforderungen und den Ablauf kennst, beginnen wir mit der Konfiguration.

  1. Anmelden bei dem Apple-Entwicklerportal.

  2. Klicken Sie auf Identifiers.

    Apple-Entwicklerportal-Identifikatoren-Sektion

    Sie sollten eine Bildschirmansicht sehen, die wie folgt aussieht:

    Apple-Entwicklerportal-Identifikatoren-Seite
    1. Stellen Sie sicher, dass dieses Feld lautet App IDs
    2. Stellen Sie sicher, dass Sie Ihr App-ID finden können.
  3. Stellen Sie sicher, dass die Sign in with Apple Fähigkeit für Ihre App aktiviert ist

    1. Klicken Sie auf Ihre App Ihre App aus der Liste auswählen
    2. Stellen Sie sicher, dass die Sign in with Apple Funktion aktiviert ist Apple-Anmeldungsfähigkeit aktiviert
    3. Wenn sie nicht aktiviert ist, aktivieren Sie sie.
  4. Zurück zu allen All Identifiers

    Alle Identifikatoren-Navigation
  5. Klicken Sie auf App Ids und gehen Sie zur Services IDs

    Navigation zu Dienst IDs-Sektion
  6. Erstellen Sie ein neues Identifikatoren

    1. Klicken Sie auf den Plus-Button

      Neuen Dienstleistungs-ID-Button hinzufügen
    2. Auswählen Servcice IDs und klicken Continue

      Dienstleistungs-ID-Auswahloption auswählen
    3. Beschreibung und Identifikatoren eingeben und klicken Continuie.

      Dienstleistungs-ID-Daten eingeben
    4. Bitte überprüfen Sie die Details und klicken Sie auf Register

      Bestätigung der Registrierung der Service-ID
    5. Klicken Sie auf die neu erstellte Service

      Auswahl der neu erstellten Service-ID
    6. Aktivieren Sie die Sign in with Apple Option

      Zulassen des Anmeldens mit Apple für die Dienst-ID
    7. Konfigurieren Sie die Sign In with Apple

      Konfigurations-Schaltfläche für Anmelden mit Apple
    8. Stellen Sie sicher, dass sich die Primary App ID auf die im vorherigen Schritt konfigurierte App-ID einstellt

      Einstellung der Primär-App-ID
    9. Fügen Sie die Domain hinzu, auf der Sie Ihren Backend-Server hosten werden.

      Einstellung der Domain- und Rückruf-URL-Felder
    10. Bestätigen Sie die Daten und klicken Sie auf Done

      Bestätigung der Domain- und Rückruf-URL-Konfiguration
    11. Klicken Sie auf Continue

      Weiter-Button für die Dienst-Konfiguration
    12. Klicken Sie auf Save

      Speichern-Button für die Dienst-Konfiguration

Das Erstellen der Schlüssel

Schritt zur Erstellung der Schlüssel
  1. Zurück zu allen All Identifiers

    Alle Identifikatoren-Navigationsschaltfläche
  2. Klicken Sie auf Keys

    Schlüsselabschnitt im Apple-Entwicklerportal
  3. Klicken Sie auf das Plus-Symbol

    Neuen Schlüssel hinzufügen
  4. Benennen Sie Ihren Schlüssel

    Schlüsselnamenfeld ausfüllen
  5. Auswählen Sign in with Apple und klicken Configure

    Die Aktivierung und Konfiguration von Sign in with Apple für die Schlüssel
  6. Auswählen Sie die primäre App-ID und drücken Sie Save

    Auswahl der primären App-ID für die Schlüssel
  7. Klicken Sie auf Continue

    Weiterknopf für die Schlüsselkonfiguration
  8. Klicken Sie auf Register

    Registrierungs-Schaltfläche für die Erstellung der Schlüssel
  9. Copy the key ID and download the key.

    Schlüssel-ID und Download-Button-Seite
  10. Finden Sie den heruntergeladenen Schlüssel und speichern Sie ihn im Backend-Ordner.

    Heruntergeladener Schlüssel-Datei

Um es zu verwenden Login with Apple auf Android, benötigen Sie das Team IDEs wird im Backend verwendet.

  1. Gehe zu dieser Website und scrolliere nach unten

  2. Finde die Team ID

    Team-ID-Locations in deinem Entwicklerkonto

Wie Sie im Diagramm gesehen haben, führt das Backend einen Schritt aus, der Redirect back to the appdies erfordert manuelle Änderungen an Ihrer App.

  1. Ändern Sie das AndroidManifest.xml
    1. Öffnen Sie das Datei, ich werde __CAPGO_KEEP_0__ verwenden AndroidStudio

      Öffnen Sie die Datei AndroidManifest.xml in Android Studio
    2. Finden Sie die MainActivity und fügen Sie den folgenden Intent-Filter hinzu

      Intent-Filter code zum Hinzufügen 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. Ändern Sie das MainActivity
    1. Bitte öffnen Sie die MainActivity

      MainActivity.java-Datei in Android Studio
    2. Fügen Sie den folgenden code hinzu:

      Code zum Hinzufügen zu MainActivity für die Verarbeitung von tiefen 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);
      }

Ein Backend ist für Android erforderlich, aber die Konfiguration eines Backends wirkt sich auch auf IOS aus. Ein Beispiel-Backend wird bereitgestellt hier

Dieses Beispiel bietet folgendes:

  • Ein einfaches JSON-Datenbank
  • Eine Möglichkeit, den JWT von Apples Servern anzufordern
  • Eine einfache JWT-Verifizierung

Gegeben alles, was ich in diesem Tutorial gesagt habe, hier ist, wie die env Abschnitt aussehen würde:

  • ANDROID_SERVICE_ID = Dienst-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"
}

Die Verwendung der login Funktion ändert sich nicht, es ist dasselbe wie bei IOS. Bitte haben Sie einen Blick in diese Abschnitt für weitere Informationen. ALLERDINGS, die initialize sollte sich ein bisschen ändern.

await SocialLogin.initialize({
apple: {
clientId: 'ee.forgr.io.ionic.starter.service2',
redirectUrl: 'https://appleloginvps.wcaleniewolny.me/login/callback'
}
})
  1. Wenn Sie noch keinen App-Id haben, klicken Sie auf die Plus-Taste

    Neuer Identifikator plus-Taste hinzufügen
  2. Auswählen App IDs und klicken Sie auf weiter

    Auswahl der App-Ids-Typ
  3. Klicken Sie auf Typ App klicken Sie Continue

    Auswahl des App-Typs
  4. Geben Sie die Beschreibung und die App-Id ein

    Eingabe der App-Beschreibung und des Bundle-Ids
  5. Aktivieren Sign with Apple Fähigkeit

    Aktivieren von Apple-Anmelden-Funktion
  6. Klicken Continue

    Fortsetzen-Button für die App-Registrierung
  7. Bestätigen Sie die Details und klicken Sie Register

    Bestätigung der App-Registrierungsdetails

Wenn Sie die Apple-Login-Funktion auf Android verwenden Apple-Authentifizierung auf Android um Authentifizierung und Account-Flüsse zu planen, verbinden Sie es mit Verbinden Sie es mit @capgo/capacitor-social-login für die native Fähigkeit in Verwendung von @capgo/capacitor-social-login, @capgo/capacitor-Social-Login für die Implementierungsdetail in @capgo/capacitor-social-login, @capgo/capacitor-Passkey für die Implementierungsdetail in @capgo/capacitor-passkey, @capgo/capacitor-native-biometrisch für die Implementierungsdetail in @capgo/capacitor-native-biometric, und Zwei-Faktor-Authentifizierung für die Implementierungsdetail in Zwei-Faktor-Authentifizierung.