Supabase Google Login auf iOS
Eine Einrichtungsvorschlagszeile 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-Authentifizierung auf iOS zu integrieren. Es wird angenommen, 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 wichtigsten Konzepte und wie Sie sie verwenden können.
Mithilfe der Authentifizierungs-Hilfe
Abschnitt mit dem Titel “Authentifizierung mit Hilfe des Authentifizierungshelfers”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, 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 automatisch aus bei Google 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 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 Vollständige Code-Referenzabschnitt 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 Supabases’signInWithIdToken()- 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“Die authenticateWithGoogleSupabase Funktion enthält einen retry Parameter:
- Erste Anruf (
retry=falseWenn die Validierung fehlschlägt, wird automatisch abgemeldet und einmal wiederholt - Wiederholter Anruf (
retry=trueWenn 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-MismatchDie Funktion wiederholt sich automatisch – überprüfe die Konsole für Details. Wenn es anhält, melde dich manuell ab zuerst
- Ungültige ZielgruppeÜberprüfe, ob deine Google-Kunden IDs in beiden Google Cloud Console und Supabase (beide iOS- und Webclient-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
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 Wenn Sie Supabase Google Login auf iOS verwenden um die Authentifizierung und die Kontenflüsse zu planen, verbinden Sie es mit Verwenden Sie @capgo/capacitor-social-login für die native Fähigkeit in Verwenden Sie @capgo/capacitor-social-login, @capgo/capacitor-social-login für die Implementierungsdetail in @capgo/capacitor-social-login, @capgo/capacitor-passkey für die Implementierungsdetail in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric für die Implementierungsdetail in @capgo/capacitor-native-biometric, und Zwei-Faktor-Authentifizierung für die Implementierungsdetail in Zwei-Faktor-Authentifizierung.