Zum Inhalt springen

Apple-Login auf Android

GitHub

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

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

  • Schwierige Konfiguration
  • Eine Backend-Instanz ist erforderlich

Zeige mir bitte ein Diagramm, um den Fluss auf Android zu erklären:

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

  1. Anmeldung im Apple Developer Portal.

  2. Klicken Sie auf Identifiers.

    Apple Developer Portal Identifiers Abschnitt

    Sie sollten eine Seite sehen, die wie folgt aussieht:

    Apple Developer Portal Identifiers Seite
    1. Stellen Sie sicher, dass dieses Feld lautet App IDs
    2. Stellen Sie sicher, dass Sie Ihre App-ID finden können.
  3. Stellen Sie sicher, dass die Sign in with Apple Funktion für Ihre App aktiviert ist

    1. Klicken Sie auf Ihre App Auswählen Sie Ihre App aus der Liste
    2. Stellen Sie sicher, dass die Sign in with Apple Funktion aktiviert ist Hinweis: Die Funktion "Sign in with Apple" ist aktiviert
    3. Wenn es nicht aktiviert ist, aktivieren Sie es.
  4. Zurück zu allen All Identifiers

    Alle Identifikatoren-Navigationsschaltfläche
  5. Klicken Sie auf App Ids und gehen Sie zu Services IDs

    Navigation zur Services-IDs-Sektion
  6. Ein neues Identifikator erstellen

    1. Klicken Sie auf die Plus-Taste

      Neue Service-ID-Schaltfläche
    2. Auswählen Servcice IDs und klicken Sie Continue

      Auswahl der Service-IDs-Option
    3. Geben Sie eine Beschreibung und einen Identifikator ein und klicken Sie Continuie.

      Eingabe von Service-ID-Daten
    4. Bitte überprüfen Sie die Details und klicken Sie auf Register

      Bestätigung der Registrierung der Service ID
    5. Klicken Sie auf den neu erstellten Service

      Auswahl des neu erstellten Service ID
    6. Aktivieren der Sign in with Apple Option

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

      Einstellungs-Button für Anmeldung mit Apple
    8. Stellen Sie sicher, dass der Primary App ID auf die im vorherigen Schritt konfigurierte App-ID festgelegt ist

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

      Einstellung für die Domain und die Rückruf-URL
    10. Bestätigen Sie die Daten und klicken Sie Done

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

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

      Speichern-Button für die Dienst-Konfiguration
  1. Zurück zu allen All Identifiers

    Alle Identifikatoren-Navigation-Button
  2. Klicken Sie auf Keys

    Schlüsselabschnitt im Apple Developer Portal
  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

    Zurücksetzen und konfigurieren Sie Sign in with Apple für den Schlüssel
  6. Wählen Sie die primäre App-ID und drücken Sie Save

    Primäre 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üsselbildung
  9. Kopieren Sie die Schlüssel-ID und laden Sie den Schlüssel herunter.

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

    Heruntergeladener Schlüssel-Datei

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

  1. Gehe zu __CAPGO_KEEP_0__ diese Website und scrollen Sie nach unten

  2. Finden Sie die Team ID

    Team-ID-Einstellung in Ihrem Entwicklerkonto

Wie Sie im Diagramm sehen können, führt der Backend einen Schritt namens Redirect back to the app. Dies erfordert manuelle Änderungen an Ihrer App.

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

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

      Fügen Sie in MainActivity den Intent-Filter code hinzu
      <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 den MainActivity
    1. Bitte öffnen Sie MainActivity

      Das Datei MainActivity.java 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 wird auch auf IOS Auswirkungen haben. Ein Beispiel-Backend ist hier bereitgestellt hier

Dieses Beispiel bietet folgendes:

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

Sektion so aus: env __CAPGO_KEEP_0__

  • 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 des login Funktion ändert sich nicht, es ist gleich wie bei IOS. Bitte haben Sie einen Blick in den entsprechenden 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 haben, klicken Sie auf die Plus-Taste

    Neue Identifikator-Plus-Taste
  2. Auswählen App IDs und klicken Sie auf Weiter

    App-IDs-Typ auswählen
  3. Klicken Sie auf Typ App und klicken Continue

    App-Typ auswählen
  4. Beschreibung und App-ID eingeben

    App-Beschreibung und Bundle-ID eingeben
  5. Aktivieren Sign with Apple Fähigkeit

    Apple-Sign-in-Fähigkeit aktivieren
  6. Klicken Continue

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

    Bestätigung der Registrierungsdetails der App

Wenn Sie die Authentifizierung und die Kontenflüsse planen Apple-Login auf Android und es mit Verwenden Sie @capgo/capacitor-social-login für die native Fähigkeit in Verwenden Sie @capgo/capacitor-social-login, Verwenden Sie @capgo/capacitor-social-login für die Implementierungsdetails in @capgo/capacitor-social-login, Verwenden Sie @capgo/capacitor-passkey für die Implementierungsdetails in @capgo/capacitor-Passkey @capgo/capacitor-native-biometrisch für die Implementierungsdetails in @capgo/capacitor-native-biometrisch, und Zweifaktor-Authentifizierung für die Implementierungsdetails in Zweifaktor-Authentifizierung.