Supabase Google Login auf iOS
Kopieren Sie einen Einrichtungsvorschlag mit den Installationsanweisungen und der vollständigen Markdown-Guideline für diesen Plugin.
Einführung
EinleitungDiese 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
Die vollständige Implementierung ist imBeispiel-App-Datei verfügbar. Diese Anleitung erklärt die wichtigsten Konzepte und wie Sie sie verwenden können. supabaseAuthUtils.ts Die Authentifizierungs-Hilfe verwenden
Die vollständige Implementierung ist im Beispiel-App-Datei verfügbar. Diese Anleitung erklärt die wichtigsten Konzepte und wie Sie sie verwenden können.
Abschnitt mit dem Titel “Authentifizierungshilfe verwenden”Der authenticateWithGoogleSupabase Funktion erledigt den gesamten Authentifizierungsprozess:
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, wie der Authentifizierungsprozess funktioniert, 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 Token speichern, was möglicherweise zu einer Fehlfunktion der Nonce-Validierung führt. 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, wird automatisch aus Google ausgeloggt und einmal wiederholt
- Fehlerbehandlung: Wenn auch die Wiederholung fehlschlägt, wird ein Fehler zurückgegeben
Warum das passiert: iOS Google Sign-In SDK speichert Token zum Leistungsverbesserungszweck. Wenn ein gespeichertes 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.
Manueller Workaround (wenn 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 von der 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-gekodiert) geht zumnonceParameter in den Google Sign-In-APIs
Automatischer Wiederholungsmechanismus
Abschnitt mit dem Titel "Automatischer Wiederholungsmechanismus"Der authenticateWithGoogleSupabase Funktion enthält ein retry Parameter:
- Erste Anfrage (
retry=false): Wenn die Validierung fehlschlägt, loggt sich automatisch aus und versucht es einmal erneut - Wiederholte Anfrage (
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 versucht automatisch erneut - überprüfe die Konsole für Details. Wenn es anhält, melde dich manuell aus
- Ungültiger Zuhörer: Überprüfe, ob deine Google-Kunden-IDs in beiden Google Cloud Console und Supabase (beide iOS- und Web-Client-IDs) übereinstimmen
- Tokenvalidierung fehlschlägtStellen Sie sicher, dass Sie
mode: 'online'in der Initialisierungsruf, um einen idToken zu erhalten - Info.plist-KonfigurationStellen Sie sicher, dass Info.plist die richtigen URL-Schemes und GIDClientID enthält
- Überprüfen Sie das Beispiel-App code zum Verweis
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 zum Verweis um Authentifizierungs- und Kontoflusspläne 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.