Supabase-Apple-Login auf Android
Kopieren Sie einen Einrichtungsprompt mit den Installationsanweisungen und der vollständigen Markdown-Guideline für diesen Plugin.
Voraussetzungen
Abschnitt mit dem Titel „Voraussetzungen“Diese Anleitung hilft Ihnen dabei, Apple Sign-In mit Supabase Authentication auf Android zu integrieren. Es wird davon ausgegangen, dass Sie bereits folgende Schritte abgeschlossen haben:
Schritt 1: Bereitstellung des Backend-Edge-Funktions
Abschnitt mit dem Titel „Schritt 1: Bereitstellung des Backend-Edge-Funktions“Zuerst müssen wir die Supabase Edge-Funktion bereitstellen, die den Apple OAuth-Rückruf bearbeiten wird.
-
Navigieren Sie zu Ihrem Supabase-Projekt-Verzeichnis
Terminal-Fenster cd your-project/supabase -
Erstelle die Edge-Funktion (wenn sie nicht existiert)
Terminalfenster supabase functions new apple-signin-callback -
Kopiere die Edge-Funktion code
Die vollständige Implementierung der Edge-Funktion ist im Beispiel-App verfügbar.
Kopiere die folgenden Dateien in dein Projekt:
supabase/functions/apple-signin-callback/index.ts- Haupt-Edge-Funktion codesupabase/functions/apple-signin-callback/deno.json- Importmap für Abhängigkeiten (enthältjoseBibliothek für JWT-Signierung)
-
Konfiguriere die JWT-Verifizierung
Die Apple OAuth-Callback-Endpunkt muss öffentlich sein (keine Authentifizierung erforderlich), da Apple zu ihm umleitet. Aktualisieren Sie Ihren
supabase/config.tomldatei:[functions.apple-signin-callback]enabled = trueverify_jwt = false # Important: Set to false for public 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 -
Funktion-URL abrufen
Nach der Bereitstellung erhalten Sie eine URL wie:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callbackWenn Sie es nicht finden können, können Sie Folgendes tun:
- Öffnen
https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions - Klicken Sie auf den
apple-signin-callbackFunktion-URL, um sie zu kopieren.
- Öffnen
Schritt 2: Konfigurieren Sie das Apple-Entwicklerportal
Abschnitt mit dem Titel „Schritt 2: Konfigurieren Sie das Apple-Entwicklerportal“Jetzt müssen wir das Apple-Entwicklerportal mit der Backend-URL konfigurieren und alle erforderlichen Werte erhalten.
-
Beachten Sie die Apple Login Android-Einrichtungsanleitung
Abschließen Sie das Apple Login Android-Einrichtungsanleitung zu:
- Erstellen Sie einen Dienst-ID
- Generieren Sie einen privaten Schlüssel (.p8-Datei)
- Holen Sie sich Ihren Team-ID und Schlüssel-ID
- Konfigurieren Sie die Rückruf-URL
-
Setzen Sie die Rückruf-URL in Apple Developer Portal
Wenn Sie die Rückruf-URL in Apple Developer Portal (Schritt 6.9 der Apple-Anleitung) konfigurieren, verwenden Sie Ihre Supabase Edge-Funktion-URL:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callbackWichtig: Verwenden Sie die Supabase Edge-Funktion-URL
Nicht verwenden die von der Apple Login Android-Einrichtungsanleitung bereitgestellte Umleitungs-URL. Diese Anleitung verwendet eine benutzerdefinierte Backend-Server-URL. Für die Supabase-Integration müssen Sie stattdessen Ihre Supabase Edge-Funktion-URL verwenden. Genauer Treffer erforderlich
-
Nachdem Sie die Anleitung für die Apple-Einrichtung abgeschlossen haben, sollten Sie folgende haben:
APPLE_TEAM_ID
- : Ihre Apple-Entwickler-Team-IDAPPLE_KEY_ID
- : Die Key-ID aus dem Apple-Entwickler-PortalAPPLE_PRIVATE_KEY
- : Ihr .p8-Privatschlüssel-Datei (muss base64-codiert sein)ANDROID_SERVICE_ID
- : Ihre Apple-Dienst-ID (z.B.exactly
com.example.app.service) - BASE_REDIRECT_URL: Ihre tiefgreifende Link-URL (z.B.,
capgo-demo-app://path)
protectedTokens
Abschnitt mit dem Titel “Schritt 3: Setze Supabase-Secrets”Zum Abschluss müssen wir die Umgebungsvariablen (Secrets) für die Supabase Edge-Funktion konfigurieren.
-
Dein privates Schlüssel
Erstelle zunächst eine Basis-64-Codierung deines Apple-Privatschlüssels (.p8-Datei):
Terminal-Fenster base64 -i AuthKey_XXXXX.p8Kopiere die gesamte Ausgabe (es ist eine einzelne lange Zeichenkette).
-
Setze Secrets mit Supabase CLI
Terminal-Fenster supabase secrets set APPLE_TEAM_ID=your_team_idsupabase secrets set APPLE_KEY_ID=your_key_idsupabase secrets set APPLE_PRIVATE_KEY=your_base64_encoded_keysupabase secrets set ANDROID_SERVICE_ID=your.service.idsupabase secrets set BASE_REDIRECT_URL=your-app://pathsupabase secrets set APPLE_REDIRECT_URI=https://your-project-ref.supabase.co/functions/v1/apple-signin-callback -
Alternative: Legen Sie Geheimnisse im Supabase-Dashboard fest
Wenn Sie das Dashboard bevorzugen:
- Gehen Sie zu Ihrem Supabase-Projekt-Dashboard
- Navigieren Sie zu Edge-Funktionen → Einstellungen → Geheimnisse
- Fügen Sie jedem Geheimnisvariablen mit seinem Wert hinzu
Abschnitt mit dem Titel „Schritt 4: Verwenden Sie den Authentifizierungs-Helfer“
Jetzt können Sie den Authentifizierungs-Helfer in Ihrer App __CAPGO_KEEP_0__ verwenden.Now you can use the authentication helper in your app code.
Abschnitt mit dem Titel „Implementierung“
Jetzt können Sie den Authentifizierungs-Helfer in Ihrer App __CAPGO_KEEP_0__ verwenden.Die vollständige Implementierung ist im Beispiel-Apps supabaseAuthUtils.ts Datei verfügbar.
Mit der Authentifizierungshilfe
Abschnitt mit dem Titel “Mit der Authentifizierungshilfe”import { authenticateWithAppleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithAppleSupabase();if (result.success) { console.log('Signed in:', result.user); // Navigate to your authenticated area} else { console.error('Error:', result.error);}Aktualisieren Sie die Hilfsfunktion
Abschnitt mit dem Titel “Aktualisieren Sie die Hilfsfunktion”Wenn Sie die authenticateWithAppleSupabase Hilfsfunktion verwenden, müssen Sie folgende Werte an Ihre Konfiguration anpassen: example app’s
-
Aktualisieren
redirectUrl- Setze dies auf deine Supabase Edge Function URL:const redirectUrl = platform === 'android'? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback': undefined; -
Aktualisieren
clientId- Setze dies auf deine Apple Service ID:await SocialLogin.initialize({apple: {clientId: isIOS? undefined // iOS uses bundle ID automatically: 'your.service.id.here', // Your Apple Service ID for AndroidredirectUrl: redirectUrl,},});
the vollständige Implementierung zur Referenz.
Schritt 5: Testen der Integration
Abschnitt mit dem Titel “Schritt 5: Testen der Integration”-
Erstellen und ausführen Sie Ihre Android-App
Terminalfenster npx cap sync androidnpx cap run android -
Testen Sie den Authentifizierungsfluss
- Tippen Sie auf die Schaltfläche „Mit Apple anmelden“
- Sie sollten die Apple OAuth-Seite in einem Browser sehen
- Nach der Authentifizierung sollten Sie wieder auf Ihre App zurückgeleitet werden
- Überprüfen Sie die Konsole auf Fehler
-
Überprüfen Sie den Ablauf
Der gesamte Ablauf sollte sein:
- Benutzer klickt auf „Mit Apple anmelden“
- Die App öffnet einen Browser mit Apple OAuth
- Benutzer authentifiziert sich bei Apple
- Apple leitet weiter zu:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback - Die Edge-Funktion tauscht code gegen Token aus
- Die Edge-Funktion leitet weiter zu:
your-app://path?id_token=...&access_token=... - Die Android-App erhält den tiefen Link und verarbeitet den Identitäts-Token
- Die App meldet sich bei Supabase mit dem Identitäts-Token an
Fehlerbehebung
Abschnitt mit dem Titel „Fehlerbehebung“Wenn die Authentifizierung fehlschlägt:
- URI-Mismatch: Überprüfen Sie die Rückruf-URL im Apple-Entwicklerportal, ob sie genau mit
APPLE_REDIRECT_URIGeheimnis - Tiefes Link nicht funktioniert: Überprüfen Sie, ob
AndroidManifest.xmlZiel-Filter entspricht IhremBASE_REDIRECT_URL - Fehlende Geheimnisse: Überprüfen Sie, ob alle Geheimnisse korrekt gesetzt sind, indem Sie
supabase secrets list - Token-Austausch fehlschlägt: Überprüfen Sie die Edge-Function-Protokolle im Supabase-Dashboard für detaillierte Fehlermeldungen
- Die App erhält keine Callback: Stelle sicher
onNewIntentist in MainActivity korrekt implementiert - Überprüfe das Beispiel-App code als Referenz
Wie es funktioniert
Abschnitt mit dem Titel “Wie es funktioniert”Bei Android verwendet Apple Sign-In einen OAuth-Redirect-Flow:
- Initialisierung: Die Erweiterung wird mit deinem Service-ID und dem Backend-Redirect-URL initialisiert
- OAuth-Flow: Öffnet einen Browser/Chrome-Custom-Tab mit der Apple-OAuth-Seite
- Hintergrund-Aufruf: Apple leitet den Benutzer auf Ihre Supabase Edge-Funktion um, wobei eine Autorisierung code erfolgt
- Tokenaustausch: Die Edge-Funktion tauscht den code gegen Token aus, indem sie sich am Token-Endpunkt von Apple bedient
- Deep-Link-Weiterleitung: Die Edge-Funktion leitet den Benutzer zurück auf Ihre App mit dem Identitäts-Token
- Supabase-Authentifizierung: Die App erhält das Token und meldet sich bei Supabase an
Diese Fluss ist erforderlich, da Apple keine native Android-Unterstützung für Sign in with Apple bietet.