Supabase Google Login auf iOS
Eine Voreinstellung mit den Installationsanweisungen und der vollständigen Markdown-Dokumentation für diesen Plugin kopieren.
Einführung
Abschnitt mit dem Titel „Einführung“Diese Anleitung hilft Ihnen, Google Sign-In mit Supabase Authentication auf iOS zu integrieren. Es wird davon ausgegangen, dass Sie bereits folgende Schritte abgeschlossen haben:
Implementierung
Abschnitt: "Implementierung"Die vollständige Implementierung ist im Beispiel-App-Datei supabaseAuthUtils.ts verfügbar. Diese Anleitung erklärt die wichtigsten Konzepte und wie man sie verwendet.
Mit dem Authentifizierungs-Helfer
Abschnitt: "Mit dem Authentifizierungs-Helfer"Die authenticateWithGoogleSupabase Funktion handhabt den gesamten Authentifizierungsfluss:
import { authenticateWithGoogleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithGoogleSupabase();if (result.success) { console.log('Signed in:', result.user); // Navigate to your authenticated area} else { console.error('Error:', result.error);}Wie es funktioniert
Abschnitt: "Wie es funktioniert"Für eine detaillierte Erklärung, wie der Authentifizierungsfluss funktioniert, einschließlich der Nonce-Generierung, der JWT-Validierung und der Supabase-Anmeldung, siehe den Abschnitt "Wie es funktioniert" im General Setup-Leitfaden Wie es funktioniert.
Wichtige Hinweise
Abschnitt mit dem Titel "Wichtige Hinweise"iOS-Token-Caching und Nonce-Probleme
Abschnitt mit dem Titel "iOS-Token-Caching und Nonce-Probleme"Nonce-Caching-Probleme auf iOS
Bei iOS kann Google Sign-In-Tokens speichern, was möglicherweise dazu führt, dass die Nonce-Validierung fehlschlägt. Die validateJWTToken Funktion erkennt dies automatisch und handhabt es wie folgt:
- Automatische ErkennungDie Funktion überprüft, ob der in dem Token enthaltene Nonce mit dem erwarteten
nonceDigest - Automatische Wiederholung: Wenn die Validierung fehlschlägt, loggt sich es automatisch bei Google aus und versucht es einmal erneut
- Fehlerbehandlung: Wenn auch der Wiederholversuch fehlschlägt, wird ein Fehler zurückgegeben
Warum das passiert: iOS Google Sign-In SDK speichert Tokens zum Leistungsverbesserungszweck. Wenn ein gecachertes Token zurückgegeben wird, kann es möglicherweise mit einem anderen (oder keinem) Nonce generiert worden sein, was zu einem Mismatch führt.
Die Lösung: Die Implementierung handhabt dies automatisch, indem es sich ausloggt und erneut versucht, was dazu führt, dass Google ein frisches Token mit dem richtigen Nonce generiert.
Manuelle Umgehung (wenn automatische Wiederholung nicht funktioniert): In die Zwischenablage kopieren
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Für die vollständige __CAPGO_KEEP_0__-Dokumentation siehe die
For the complete code reference, see the Complete Code Referenzabschnitt in der allgemeinen Einrichtungshilfe.
Wichtige Hinweise
Abschnitt mit dem Titel „Wichtige Hinweise”Nonce-Verarbeitung
Abschnitt mit dem Titel „Nonce-Verarbeitung”Die Nonce-Implementierung folgt dem Muster aus der React Native Google Sign In-Dokumentation:
rawNoncegeht zu Supabase’ssignInWithIdToken()- Supabase erstellt einen Hash von
rawNonceund vergleicht ihn mit demnonceDigestder im ID-Token von Google Sign-In enthalten ist nonceDigest(SHA-256-Hash, hex-gekodiert) geht zumnonceParameter in Google-Sign-In-APIs
Automatischer Wiederholungsmechanismus
Abschnitt mit dem Titel „Automatischer Wiederholungsmechanismus“Dies authenticateWithGoogleSupabase Die Funktion enthält ein retry Parameter:
- Erste Anfrage (
retry=false): Wenn die Validierung fehlschlägt, wird automatisch abgemeldet und einmal wiederholt - Wiederholungsanfrage (
retry=true): Wenn die Validierung erneut fehlschlägt, wird sofort ein Fehler zurückgegeben
Dies löst das iOS-Token-Caching-Problem automatisch.
Fehlersuche
Abschnitt mit dem Titel “Fehlersuche”Wenn die Authentifizierung fehlschlägt:
- Nonce-Mismatch: Die Funktion wiederholt sich automatisch – überprüfe die Konsole für Details. Wenn es anhält, melde dich manuell aus
- Ungültiger Zuhörer: Überprüfe, ob deine Google Client IDs in beiden Google Cloud Console und Supabase (beide iOS- und Webclient-IDs) übereinstimmen
- Token-Validierung fehlschlägt: Stelle sicher, dass du
mode: 'online'in der Initialisierungsruf zum Abrufen eines idToken verwendest - Info.plist-Konfiguration: Stelle sicher, dass Info.plist die korrekten URL-Schemes und GIDClientID enthält
- Überprüfe Beispiel-App code Zur Referenz
Fortsetzen Sie von Supabase Google Login auf iOS
Abschnitt mit dem Titel “Fortsetzen Sie von Supabase Google Login auf iOS”Wenn Sie Supabase Google Login auf iOS zur Planung der Authentifizierung und der Kontenflüsse verwenden, verbinden Sie es mit Mit @capgo/capacitor-social-login für die native Fähigkeit in Mit @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-Biometrie für die Implementierungsdetails in @capgo/capacitor-native-Biometrie, und Zweifaktor-Authentifizierung für die Implementierungsdetails in Zweifaktor-Authentifizierung.