Supabase Google Login auf iOS
Einen Einrichtungsvorschlag mit den Installationsanweisungen und der vollständigen Markdown-Guideline für diesen Plugin kopieren.
Einführung
EinführungDiese 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
EinführungDie vollständige Implementierung ist im Beispiel-App-Datei supabaseAuthUtils.ts verfügbar. Diese Anleitung erklärt die Schlüsselkonzepte und wie Sie sie verwenden können.
Die Authentifizierungs-Hilfe verwenden
Abschnitt mit dem Titel „Authentifizierungshilfe verwenden“Der authenticateWithGoogleSupabase Funktion übernimmt 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 mit dem Titel „Wie es funktioniert“Für eine detaillierte Erklärung des Authentifizierungsflusses, einschließlich der Nonce-Generierung, der JWT-Validierung und der Supabase-Anmeldung, siehe den Abschnitt „Wie es funktioniert“ im General Setup-Leitfaden.
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 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 die Funktion automatisch von Google aus und wiederholt dies einmal
- Fehlerbehandlung: Wenn auch die Wiederholung fehlschlägt, wird ein Fehler zurückgegeben
Warum das 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 Mismatch führt.
Die Lösung: Die Implementierung handhabt dies automatisch, indem sie sich abmeldet und erneut versucht, was Google dazu zwingt, einen frischen Token mit dem richtigen Nonce zu generieren.
Manuelle Umgehung (wenn die automatische Wiederholung nicht funktioniert):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Dies sichert eine frische Token mit dem richtigen Nonce.
Für die vollständige code-Referenz siehe den Vollständige Code-Referenz Abschnitt in der General Setup Anleitung.
Wichtige Hinweise
Abschnitt mit dem Titel „Wichtige Hinweise“Nonce-Handling
Abschnitt mit dem Titel „Nonce-Handling“Die Nonce-Implementierung folgt dem Muster aus dem React Native Google Sign In Dokumentation:
rawNoncegeht zu SupabasessignInWithIdToken()- Supabase macht 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 den Google Sign-In-APIs
Automatischer Wiederholungsmechanismus
Abschnitt mit dem Titel „Automatischer Wiederholungsmechanismus“Der authenticateWithGoogleSupabase Funktion ist ein retry Parameter:
- Erster Aufruf (
retry=false): Wenn die Validierung fehlschlägt, loggt sich automatisch aus und versucht es einmal erneut - Wiederholter Aufruf (
retry=true): Wenn die Validierung erneut fehlschlägt, gibt es sofort einen Fehler zurück
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 anhaltet, 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-Client-IDs) übereinstimmen
- Tokenvalidierung fehlschlägt: Stellen Sie sicher, dass Sie
mode: 'online'im Initialisierungscall ein idToken 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
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 verwenden Abschnitt mit dem Titel “Fortsetzen Sie von Supabase Google Login auf iOS” um die Authentifizierung und die Kontenflüsse zu planen, verbinden Sie es mit Mit @capgo/capacitor-social-login verwenden 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.