Zum Inhalt springen

Apple-Login auf Android

GitHub

Apple-Login auf Android ist hackig. Apple bietet keine offizielle Unterstützung für Sign in with Apple Da Apple auf Android keine offizielle Unterstützung bietet, ist die Lösung leicht hackig.

Android verwendet derzeit ein Chrome-Tabs, um eine OAuth2-Website anzuzeigen. Diese Vorgehensweise hat die Herausforderungen:

  • Schwierige Konfiguration
  • Ein Backend ist erforderlich

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

Da Sie sich nun der Herausforderungen und des Flusses bewusst sind, können wir mit der Konfiguration beginnen.

  1. Melden Sie sich im Apple-Entwicklerportal.

  2. Klicken Sie auf Identifiers.

    Apple-Entwicklerportal-Identifikatoren-Sektion

    Sie sollten eine Seite 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 Klicken Sie auf Ihre App

    1. Wählen Sie Ihre App aus der Liste Stellen Sie sicher, dass die
    2. Fähigkeit für Ihre App aktiviert ist Sign in with Apple Klicken Sie auf Ihre App Mit Apple-Anmeldung aktivieren
    3. Wenn es nicht aktiviert ist, aktivieren Sie es.
  4. Zurück zu allen All Identifiers

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

    Navigation zur Dienstleistungs-ID-Sektion
  6. Erstellen Sie eine neue Identifikator

    1. Klicken Sie auf die Plus-Taste

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

      Dienstleistungs-ID auswählen
    3. Beschreiben Sie eine Beschreibung und einen Identifikator und klicken Sie Continuie.

      Eingeben von Dienstleistungs-ID-Details
    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

      Aktivierung der Anmeldung mit Apple für die Service-ID
    7. Konfigurieren Sie das Sign In with Apple

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

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

      Einstellung Domäne 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
  1. Gehen Sie zurück zu allen All Identifiers

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

    Schaltfläche "Schlüssel" im Apple-Entwicklerportal
  3. Klicken Sie auf das Plus-Symbol

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

    Schlüsselname-Eingabefeld
  5. Auswählen Sign in with Apple und klicken Configure

    Apple-Sign-in aktivieren und konfigurieren für die Schlüssel
  6. Wählen Sie die Haupt-App-ID und drücken Sie Save

    Haupt-App-ID für die Schlüssel auswählen
  7. Auf Continue

    Fortsetzen-Button für die Schlüsselkonfiguration
  8. Auf Register

    Registrieren-Button für die Schlüsselerstellung
  9. Die Schlüssel-ID kopieren und den Schlüssel herunterladen.

    Schlüssel-ID und Download-Button-Bildschirm
  10. Finden Sie das heruntergeladene Schlüsseldokument und speichern Sie es im Backend-Ordner.

    Heruntergeladenes Schlüsseldokument

Um Login with Apple auf Android zu verwenden, müssen Sie die Team IDerhalten. Sie wird im Backend verwendet.

  1. Gehe zu dieser Website und scrollen Sie nach unten

  2. Finden Sie die Team ID

    Team-ID-Stelle im Entwicklerkonto

Wie Sie im Diagramm gesehen haben, führt der 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 AndroidStudio

      AndroidManifest.xml-Datei in Android Studio
    2. Finde das MainActivity und füge 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. Ändere das MainActivity
    1. Wenn du möchtest, öffne das MainActivity

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

      Code zum Hinzufügen in 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 wird auch den IOS-Einfluss beeinflussen. Ein Beispiel-Backend wird bereitgestellt hier

Dieses Beispiel bietet folgendes:

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

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

  • 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 diesen Abschnitt für weitere Informationen. ALLERDINGS, die initialize Methode ändert sich ein bisschen.

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

    Neue Identifikator-Plus-Taste hinzufügen
  2. Auswählen App IDs und klicken Sie auf Fortsetzen

    Auswahl der App-ID-Typ
  3. Klicken Sie auf den Typ App und klicken Sie Continue

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

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

    Aktivierung der Sign-in-with-Apple-Fähigkeit
  6. Klicken Continue

    Fortsetzungsschaltfläche für die Anwendungsregistrierung
  7. Bestätigen Sie die Details und klicken Sie Register

    Bestätigung der Anwendungsregistrierungsdaten

Wenn Sie die Verwendung von Apple-Login auf Android zur Planung der Authentifizierung und der Kontoflows verwenden, verbinden Sie es mit Verwendung von @capgo/capacitor-social-login Für die native Fähigkeit in Verwendung von @capgo/capacitor-social-login, @capgo/capacitor-social-login Für die Implementierungsdetails in @capgo/capacitor-social-login, @capgo/capacitor-Passwort Zur Implementierungsdetail in @capgo/capacitor-Passwort @capgo/capacitor-Native-Biometrie Zur Implementierungsdetail in @capgo/capacitor-Native-Biometrie, und Zweifaktor-Authentifizierung Zur Implementierungsdetail in Zweifaktor-Authentifizierung.