Zum Inhalt springen

Apple Login unter Android

GitHub

Apple Login auf Android ist hacky. Apple bietet keinen offiziellen Support dafür Sign in with Apple auf Android, daher ist die Lösung etwas hacky.

Android nutzt aktuell Chrome Tabs, um eine OAuth2-Website anzuzeigen. Dieser Ansatz bringt folgende Herausforderungen mit sich:

  • Schwierige Konfiguration
  • Ein Backend ist erforderlich

Ich nutze ein Diagramm, um den Flow auf Android zu erklären:

Nachdem du die Herausforderungen und den Flow kennst, lass uns mit der Konfiguration beginnen.

  1. Logge dich ein bei Apple Developer Portal.

  2. Klicken Sie auf Identifiers.

    Apple Developer Portal Bereich „Identifiers“

    Du solltest einen Bildschirm sehen, der so aussieht:

    Apple Developer Portal „Identifiers“-Ansicht
    1. Stelle sicher, dass in diesem Feld steht App IDs
    2. Vergewissere dich, dass du deine App ID findest.
  3. Stelle sicher, dass die Sign in with Apple Capability für deine App aktiviert ist

    1. Klicke auf deine App Wähle deine App aus der Liste aus
    2. Stelle sicher, dass Sign in with Apple Capability ist aktiviert Checkbox für 'Sign in with Apple' Capability
    3. Falls sie nicht aktiviert ist, aktiviere sie.
  4. Zurück zu allen All Identifiers

    Navigationsbutton 'Alle Identifiers'
  5. Klicken Sie auf App Ids und gehe zu Services IDs

    Navigation zum Bereich Service IDs
  6. Einen neuen Identifier erstellen

    1. Klicke auf den Plus-Button

      Button: Neue Service ID hinzufügen
    2. Wähle Servcice IDs und klicke auf Continue

      Option „Service IDs“ auswählen
    3. Beschreibung und Identifier eingeben und klicken Continuie.

      Service-ID-Details eingeben
    4. Bitte überprüfe die Details und klicke Register

      Registrierung der Service-ID bestätigen
    5. Klicke auf den neu erstellten Service

      Die neu erstellte Service-ID auswählen
    6. Aktiviere Sign in with Apple Option

      Sign in with Apple für die Service-ID aktivieren
    7. Konfiguriere Sign In with Apple

      Button für Sign in with Apple konfigurieren
    8. Stelle sicher, dass Primary App ID auf die im vorherigen Schritt konfigurierte App ID gesetzt ist

      Primäre App ID im Dropdown festlegen
    9. Füge die Domain hinzu, auf der du dein Backend hostest.

      Domain- und Return-URL-Felder einstellen
    10. Bestätige die Angaben und klicke auf Done

      Domain- und Return-URL-Konfiguration bestätigen
    11. Klicken Sie auf Continue

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

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

    Navigation zu allen Identifiers
  2. Klicken Sie auf Keys

    Keys-Bereich im Apple Developer Portal
  3. Auf das Plus-Icon klicken

    Button „New Key hinzufügen“
  4. Key benennen

    Key-Namen eingeben
  5. Wähle Sign in with Apple und klicke auf Configure

    Sign in with Apple für den Key aktivieren und konfigurieren
  6. Wähle die primäre App ID aus und drücke Save

    Primäre App ID für den Key auswählen
  7. Klicken Sie auf Continue

    Weiter-Button für die Konfiguration
  8. Klicken Sie auf Register

    Registrieren-Button für die Erstellung
  9. Key ID kopieren und Key herunterladen.

    Key ID und Download-Button
  10. Suche den heruntergeladenen Key und speichere ihn im Backend-Ordner.

    Heruntergeladene Key-Datei

Um zu nutzen Login with Apple musst du unter Android die Team IDabrufen. Diese wird im Backend verwendet.

  1. Gehe zu diese Website und scrolle nach unten

  2. Suche nach Team ID

    Position der Team ID im Developer Account

Wie im Diagramm zu sehen, führt das Backend einen Schritt namens Redirect back to the appaus. Dies erfordert manuelle Änderungen an deiner App.

  1. Ändere die AndroidManifest.xml
    1. Öffne die Datei, ich verwende hier AndroidStudio

      die AndroidManifest.xml Datei in Android Studio
    2. Suche nach MainActivity und füge den folgenden Intent-Filter hinzu

      Intent-Filter code für die 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 die MainActivity
    1. Bitte öffne die MainActivity

      MainActivity.java-Datei in Android Studio
    2. Füge das folgende code hinzu:

      Code, das du zu MainActivity hinzufügst, um Deep Links zu verarbeiten
      @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);
      }

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

Dieses Beispiel bietet Folgendes:

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

Nach allem, was ich in diesem Tutorial erklärt habe, sieht der env Abschnitt so aus:

  • 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"
}

Die Verwendung der login Die Funktion ändert sich nicht, sie ist dieselbe wie unter iOS. Weitere Infos findest du in diesem Abschnitt. ALLERDINGS, die initialize ändert sich die Methode etwas.

await SocialLogin.initialize({
apple: {
clientId: 'ee.forgr.io.ionic.starter.service2',
redirectUrl: 'https://appleloginvps.wcaleniewolny.me/login/callback'
}
})
  1. Falls du noch keine App ID hast, klicke auf den Plus-Button

    Plus-Button „Neuen Identifier hinzufügen“
  2. Wähle App IDs und klicke auf Weiter

    App-ID-Typ auswählen
  3. Klicke auf den Typ App und klicke auf Continue

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

    App-Beschreibung und Bundle-ID eingeben
  5. Aktivieren Sign with Apple Capability

    Sign in with Apple Capability aktivieren
  6. Klicken Continue

    Continue-Button für die App-Registrierung
  7. Details bestätigen und klicken Register

    App-Registrierungsdetails bestätigen

Nach Apple-Login auf Android fortfahren

Abschnitt „Weiter mit Apple Login auf Android“

Wenn du es nutzt Apple Login unter Android Um Authentifizierungs- und Account-Flows zu planen, verbinde es mit @capgo/capacitor-social-login verwenden für die native Funktion bei der Verwendung von @capgo/capacitor-social-login, @capgo/capacitor-social-login für die Implementierungsdetails in @capgo/capacitor-social-login, @capgo/capacitor-passkey für die Implementierungsdetails in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric für die Implementierungsdetails in @capgo/capacitor-native-biometric, und Zwei-Faktor-Authentifizierung für die Implementierungsdetails zur Zwei-Faktor-Authentifizierung.