Zum Inhalt springen

Supabase Google Login auf iOS

GitHub

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:

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);
}

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.

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:

  1. Automatische ErkennungDie Funktion überprüft, ob der in dem Token enthaltene Nonce mit dem erwarteten nonceDigest
  2. Automatische Wiederholung: Wenn die Validierung fehlschlägt, loggt sich es automatisch bei Google aus und versucht es einmal erneut
  3. 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 tokens
await SocialLogin.logout({ provider: 'google' });
// Then authenticate
const 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.

Die Nonce-Implementierung folgt dem Muster aus der React Native Google Sign In-Dokumentation:

  • rawNonce geht zu Supabase’s signInWithIdToken()
  • Supabase erstellt einen Hash von rawNonce und vergleicht ihn mit dem nonceDigest der im ID-Token von Google Sign-In enthalten ist
  • nonceDigest (SHA-256-Hash, hex-gekodiert) geht zum nonce Parameter in Google-Sign-In-APIs

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.

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

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.