Supabase Apple Login auf Android
Voraussetzungen
Section titled “Voraussetzungen”Diese Anleitung hilft Ihnen bei der Integration von Apple Sign-In mit Supabase-Authentifizierung auf Android. Es wird vorausgesetzt, dass Sie bereits Folgendes abgeschlossen haben:
Schritt 1: Backend Edge Function bereitstellen
Section titled “Schritt 1: Backend Edge Function bereitstellen”Zuerst müssen wir die Supabase Edge Function bereitstellen, die den Apple OAuth-Callback verarbeitet.
-
Navigieren Sie zu Ihrem Supabase-Projektverzeichnis
Terminal-Fenster cd ihr-projekt/supabase -
Erstellen Sie die Edge Function (falls sie nicht existiert)
Terminal-Fenster supabase functions new apple-signin-callback -
Kopieren Sie den Edge Function-Code
Die vollständige Edge Function-Implementierung ist in der Beispiel-App verfügbar.
Kopieren Sie die folgenden Dateien in Ihr Projekt:
supabase/functions/apple-signin-callback/index.ts- Haupt-Edge-Function-Codesupabase/functions/apple-signin-callback/deno.json- Import-Map für Abhängigkeiten (enthältjose-Bibliothek für JWT-Signierung)
-
JWT-Verifizierung konfigurieren
Der Apple OAuth-Callback-Endpunkt muss öffentlich sein (keine Authentifizierung erforderlich), da Apple dorthin weiterleitet. Aktualisieren Sie Ihre
supabase/config.toml-Datei:[functions.apple-signin-callback]enabled = trueverify_jwt = false # Wichtig: Auf false setzen für öffentlichen OAuth-Callbackimport_map = "./functions/apple-signin-callback/deno.json"entrypoint = "./functions/apple-signin-callback/index.ts" -
Funktion bereitstellen
Terminal-Fenster supabase functions deploy apple-signin-callback -
Ihre Funktions-URL abrufen
Nach der Bereitstellung erhalten Sie eine URL wie:
https://ihre-projekt-ref.supabase.co/functions/v1/apple-signin-callbackFalls Sie sie nicht finden können, können Sie Folgendes tun:
- Öffnen Sie
https://supabase.com/dashboard/project/IHRE_PROJEKT_REF/functions - Klicken Sie auf die URL der
apple-signin-callback-Funktion, um sie zu kopieren.
- Öffnen Sie
Schritt 2: Apple Developer Portal konfigurieren
Section titled “Schritt 2: Apple Developer Portal konfigurieren”Jetzt müssen wir das Apple Developer Portal mit der Backend-URL konfigurieren und alle erforderlichen Werte abrufen.
-
Folgen Sie der Apple Login Android-Einrichtungsanleitung
Schließen Sie die Apple Login Android-Einrichtungsanleitung ab, um:
- Eine Service-ID zu erstellen
- Einen privaten Schlüssel zu generieren (.p8-Datei)
- Ihre Team-ID und Key-ID zu erhalten
- Die Return-URL zu konfigurieren
-
Return-URL im Apple Developer Portal festlegen
Verwenden Sie beim Konfigurieren der Return-URL im Apple Developer Portal (Schritt 6.9 der Apple-Anleitung) Ihre Supabase Edge Function-URL:
https://ihre-projekt-ref.supabase.co/functions/v1/apple-signin-callbackWichtig: Supabase Edge Function-URL verwenden
Verwenden Sie NICHT die Weiterleitungs-URL aus der Apple Login Android-Einrichtungsanleitung. Diese Anleitung verwendet eine benutzerdefinierte Backend-Server-URL. Für die Supabase-Integration müssen Sie stattdessen Ihre Supabase Edge Function-URL verwenden.
-
Alle erforderlichen Werte sammeln
Nach Abschluss der Apple-Einrichtungsanleitung sollten Sie haben:
- APPLE_TEAM_ID: Ihre Apple Developer Team-ID
- APPLE_KEY_ID: Die Key-ID aus dem Apple Developer Portal
- APPLE_PRIVATE_KEY: Ihre .p8-Privatschlüsseldatei (muss base64-kodiert sein)
- ANDROID_SERVICE_ID: Ihre Apple Service-ID (z.B.
com.example.app.service) - BASE_REDIRECT_URL: Ihre Deep-Link-URL (z.B.
capgo-demo-app://path)
Schritt 3: Supabase Secrets festlegen
Section titled “Schritt 3: Supabase Secrets festlegen”Jetzt müssen wir die Umgebungsvariablen (Secrets) für die Supabase Edge Function konfigurieren.
-
Ihren privaten Schlüssel kodieren
Kodieren Sie zuerst Ihren privaten Apple-Schlüssel (.p8-Datei) in base64:
Terminal-Fenster base64 -i AuthKey_XXXXX.p8Kopieren Sie die gesamte Ausgabe (es ist eine einzelne lange Zeichenkette).
-
Secrets mit Supabase CLI festlegen
Terminal-Fenster supabase secrets set APPLE_TEAM_ID=ihre_team_idsupabase secrets set APPLE_KEY_ID=ihre_key_idsupabase secrets set APPLE_PRIVATE_KEY=ihr_base64_kodierter_schluesselsupabase secrets set ANDROID_SERVICE_ID=ihre.service.idsupabase secrets set BASE_REDIRECT_URL=ihre-app://pfadsupabase secrets set APPLE_REDIRECT_URI=https://ihre-projekt-ref.supabase.co/functions/v1/apple-signin-callback -
Alternative: Secrets im Supabase Dashboard festlegen
Wenn Sie das Dashboard bevorzugen:
- Gehen Sie zu Ihrem Supabase-Projekt-Dashboard
- Navigieren Sie zu Edge Functions → Einstellungen → Secrets
- Fügen Sie jede Secret-Variable mit ihrem Wert hinzu
Schritt 4: Authentifizierungs-Helper verwenden
Section titled “Schritt 4: Authentifizierungs-Helper verwenden”Jetzt können Sie den Authentifizierungs-Helper in Ihrem App-Code verwenden.
Implementierung
Section titled “Implementierung”Die vollständige Implementierung ist in der Datei supabaseAuthUtils.ts der Beispiel-App verfügbar.
Verwendung des Authentifizierungs-Helpers
Section titled “Verwendung des Authentifizierungs-Helpers”import { authenticateWithAppleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithAppleSupabase();if (result.success) { console.log('Angemeldet:', result.user); // Navigieren Sie zu Ihrem authentifizierten Bereich} else { console.error('Fehler:', result.error);}Aktualisierung der Helper-Funktion
Section titled “Aktualisierung der Helper-Funktion”Wenn Sie die Helper-Funktion authenticateWithAppleSupabase verwenden, müssen Sie die folgenden Werte aktualisieren, damit sie mit Ihrer Konfiguration übereinstimmen:
-
redirectUrlaktualisieren - Setzen Sie dies auf Ihre Supabase Edge Function-URL:const redirectUrl = platform === 'android'? 'https://ihre-projekt-ref.supabase.co/functions/v1/apple-signin-callback': undefined; -
clientIdaktualisieren - Setzen Sie dies auf Ihre Apple Service-ID:await SocialLogin.initialize({apple: {clientId: isIOS? undefined // iOS verwendet automatisch die Bundle-ID: 'ihre.service.id.hier', // Ihre Apple Service-ID für AndroidredirectUrl: redirectUrl,},});
Siehe die vollständige Implementierung als Referenz.
Schritt 5: Integration testen
Section titled “Schritt 5: Integration testen”-
Ihre Android-App erstellen und ausführen
Terminal-Fenster npx cap sync androidnpx cap run android -
Authentifizierungsablauf testen
- Tippen Sie auf die Schaltfläche “Mit Apple anmelden”
- Sie sollten die Apple OAuth-Seite in einem Browser sehen
- Nach der Authentifizierung sollten Sie zurück zu Ihrer App weitergeleitet werden
- Überprüfen Sie die Konsolenprotokolle auf Fehler
-
Ablauf überprüfen
Der vollständige Ablauf sollte sein:
- Benutzer tippt auf “Mit Apple anmelden”
- App öffnet Browser mit Apple OAuth
- Benutzer authentifiziert sich bei Apple
- Apple leitet weiter zu:
https://ihre-projekt-ref.supabase.co/functions/v1/apple-signin-callback - Edge Function tauscht Code gegen Tokens aus
- Edge Function leitet weiter zu:
ihre-app://pfad?id_token=...&access_token=... - Android-App empfängt den Deep-Link und verarbeitet das Identitäts-Token
- App meldet sich bei Supabase mit dem Identitäts-Token an
Fehlerbehebung
Section titled “Fehlerbehebung”Wenn die Authentifizierung fehlschlägt:
- Weiterleitungs-URI stimmt nicht überein: Überprüfen Sie, ob die Return-URL im Apple Developer Portal exakt mit dem
APPLE_REDIRECT_URI-Secret übereinstimmt - Deep-Link funktioniert nicht: Prüfen Sie, ob der
AndroidManifest.xml-Intent-Filter mit IhrerBASE_REDIRECT_URLübereinstimmt - Fehlende Secrets: Überprüfen Sie, ob alle Secrets korrekt gesetzt sind mit
supabase secrets list - Token-Austausch schlägt fehl: Überprüfen Sie die Edge Function-Logs im Supabase Dashboard auf detaillierte Fehlermeldungen
- App erhält keinen Callback: Stellen Sie sicher, dass
onNewIntentordnungsgemäß in MainActivity implementiert ist - Überprüfen Sie den Beispiel-App-Code als Referenz
Funktionsweise
Section titled “Funktionsweise”Auf Android verwendet Apple Sign-In einen OAuth-Weiterleitungsablauf:
- Initialisierung: Das Plugin wird mit Ihrer Service-ID und Backend-Weiterleitungs-URL initialisiert
- OAuth-Ablauf: Öffnet einen Browser/Chrome Custom Tab mit der OAuth-Seite von Apple
- Backend-Callback: Apple leitet zu Ihrer Supabase Edge Function mit einem Autorisierungscode weiter
- Token-Austausch: Die Edge Function tauscht den Code gegen Tokens über den Token-Endpunkt von Apple aus
- Deep-Link-Weiterleitung: Die Edge Function leitet zurück zu Ihrer App mit dem Identitäts-Token weiter
- Supabase-Authentifizierung: Die App empfängt das Token und meldet sich bei Supabase an
Dieser Ablauf ist notwendig, da Apple keine native Android-Unterstützung für “Mit Apple anmelden” bietet.