Supabase Google Login auf iOS
Ein kopierfertiger Einrichtungsvorschlag mit den Installationsanweisungen und der vollständigen Markdown-Dokumentation für diesen Plugin.
Einführung
Abschnitt mit dem Titel “Einführung”Diese Anleitung hilft Ihnen, Google Sign-In mit Supabase-Authentifizierung auf iOS zu integrieren. Es wird davon ausgegangen, dass Sie bereits folgende Schritte abgeschlossen haben:
Implementierung
Abschnitt mit dem Titel “Implementierung”Die vollständige Implementierung ist im Beispiel-Apps- supabaseAuthUtils.ts Datei verfügbar. Diese Anleitung erklärt die Schlüsselkonzepte und wie Sie sie verwenden können.
Verwendung der Authentifizierungshilfe
Abschnitt mit dem Titel “Authentifizierung mit dem Helper verwenden”Der authenticateWithGoogleSupabase Funktion
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 mit dem Titel “Wie es funktioniert”Für eine detaillierte Erklärung der Authentifizierungsablauf, einschließlich der Nonce-Generierung, JWT-Validierung und Supabase-Anmeldung, siehe den Abschnitt “Wie es funktioniert” in der Anleitung zur allgemeinen Einrichtung.
Wichtige Hinweise
Abschnitt mit dem Titel “Wichtige Hinweise”iOS-Token-Caching- und Nonce-Probleme
Abschnitt mit dem Titel “iOS-Token-Caching- und Nonce-Probleme”iOS-Nonce-Caching-Probleme
Bei iOS kann Google Sign-In-Tokens cachen, was möglicherweise dazu führt, dass die Nonce-Validierung fehlschlägt. Die validateJWTToken Die Funktion erkennt dies und handhabt es automatisch:
- Automatische Erkennung: Die Funktion überprüft, ob der in dem Token enthaltene Nonce mit dem erwarteten
nonceDigest - Automatische Wiederholung: Wenn die Validierung fehlschlägt, loggt sich automatisch von Google aus und wiederholt dies einmal
- Fehlerbehandlung: Wenn auch die Wiederholung fehlschlägt, wird ein Fehler zurückgegeben
Weshalb dies passiert: iOS Google Sign-In SDK cacht Tokens zum Leistungsverbesserungszweck. Wenn ein gecachter Token zurückgegeben wird, kann es möglicherweise mit einem anderen (oder keinem) Nonce generiert worden sein, was zu einem Mangel an Übereinstimmung führt.
Die Lösung: Die Implementierung handhabt dies automatisch, indem sie sich abmeldet und erneut versucht, was dazu führt, dass Google einen frischen Token mit dem richtigen Nonce generiert.
Manueller Workaround (wenn die automatische Wiederholung nicht funktioniert):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Damit wird sichergestellt, dass ein frischer Token mit dem richtigen Nonce erhalten wird.
Für die vollständige code-Referenz siehe den Abschnitt "Vollständige Code-Referenz" im General Setup-Leitfaden.
Wichtige Hinweise
Abschnitt mit der Überschrift "Wichtige Hinweise"Nonce-Handling
Abschnitt mit der Überschrift "Nonce-Handling"Die Nonce-Implementierung folgt dem Muster aus dem React Native Google Sign In Dokumentation:
rawNoncegeht zu SupabasessignInWithIdToken()- Supabase erstellt einen Hash von
rawNonceund vergleicht ihn mit demnonceDigestder im ID-Token von Google Sign-In enthalten ist nonceDigest(SHA-256-Hash, hex-kodiert) geht zumnonceParameter in den Google Sign-In-APIs
Automatische Wiederholungsmechanismus
Abschnitt mit dem Titel "Automatische Wiederholungsmechanismus"Der authenticateWithGoogleSupabase Funktion enthält ein retry Parameter:
- Erste Anfrage (
retry=falseWenn die Validierung fehlschlägt, loggt sich der Benutzer automatisch aus und versucht es einmal erneut - Wiederholte Anfrage (
retry=trueWenn die Validierung erneut fehlschlägt, gibt es sofort einen Fehler zurück
Dies löst das iOS-Token-Caching-Problem automatisch
Hilfe bei Problemen
Abschnitt mit dem Titel „Hilfe bei Problemen“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ültige Zielgruppe: Überprüfe, ob deine Google-Kunden-IDs in beiden Google Cloud Console und Supabase (beide iOS- und Web-Kunden-IDs) übereinstimmen
- Tokenvalidierung fehlschlägt: Stellen Sie sicher, dass Sie
mode: 'online'in der Initialisierungsrufe, um einen idToken zu erhalten - Info.plist-Konfiguration: Stellen Sie sicher, dass Info.plist die richtigen URL-Schemes und GIDClientID enthält
- Überprüfen Sie das Beispiel-App code zur Referenz
Weitermachen von Supabase Google Login auf iOS
Abschnitt mit dem Titel “Weitermachen von Supabase Google Login auf iOS”Wenn Sie Supabase Google Login auf iOS verwenden Supabase Google Login auf iOS verwenden für die Planung der Authentifizierung und der Kontoflows, 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-biometric für die Implementierungsdetails in @capgo/capacitor-native-biometric, und Zwei-Faktor-Authentifizierung für die Implementierungsdetails in Zwei-Faktor-Authentifizierung.