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 angenommen, dass Sie bereits folgende Schritte abgeschlossen haben:

Die vollständige Implementierung ist im Beispiel-App-Datei verfügbar. Diese Anleitung erklärt die wichtigsten Konzepte und wie man sie verwendet. supabaseAuthUtils.ts Mit der Authentifizierungshilfe

Abschnitt mit dem Titel “Mit der Authentifizierungshilfe”

Die

Beispiel-App-Datei 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 des Authentifizierungsflusses, einschließlich der Nonce-Generierung, der JWT-Validierung und der Supabase-Anmeldung, siehe den Abschnitt „Wie es funktioniert“ im General Setup-Leitfaden.

iOS-Nonce-Caching-Probleme

Bei iOS kann Google Sign-In-Tokens im Cache speichern, was möglicherweise dazu führt, dass die Nonce-Validierung fehlschlägt. validateJWTToken function detects this and automatically handles it:

  1. Automatische ErkennungDie Funktion überprüft, ob der in dem Token enthaltene Nonce mit dem erwarteten übereinstimmt nonceDigest
  2. Automatische WiederholungWenn die Validierung fehlschlägt, wird automatisch aus Google ausgeloggt und einmal wiederholt
  3. FehlerbehandlungWenn auch die Wiederholung fehlschlägt, wird ein Fehler zurückgegeben

Warum das passiertiOS Google Sign-In SDK speichert Tokens zum Zweck der Leistung. 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ösungDie Implementierung handhabt dies automatisch, indem sie ausloggt und wiederholt, was Google dazu zwingt, ein frisches Token mit dem richtigen Nonce zu generieren.

Manuelle Umgehung wenn sich die automatische Wiederholung nicht erfolgreich verhält:)

// Logout first to clear cached tokens
await SocialLogin.logout({ provider: 'google' });
// Then authenticate
const result = await authenticateWithGoogleSupabase();

Damit sichergestellt ist, dass ein frischer Token mit dem richtigen Nonce erhalten wird.

Für die vollständige code-Dokumentation, siehe den Abschnitt "Vollständige Code-Referenz" in der General Setup-Anleitung.

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

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

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
  • Wiederholen Sie die Anrufung (retry=true): Wenn die Validierung erneut fehlschlägt, wird sofort ein Fehler zurückgegeben

Dies handhabt die iOS-Token-Caching-Problematik automatisch.

Wenn die Anmeldung fehlschlägt:

  • Nonce-Mismatch: Die Funktion wiederholt sich automatisch - überprüfen Sie die Konsole-Protokolle für Details. Wenn dies anhaltet, loggen Sie sich manuell aus.
  • Ungültige Zielgruppe: Überprüfen Sie, ob Ihre Google-Kunden-IDs in beiden Google-Cloud-Console und Supabase (beide iOS- und Web-Kunden-IDs) übereinstimmen.
  • Token-Validierung fehlschlägt: Stellen Sie sicher, dass Sie die richtige Version verwenden mode: 'online' in der Initialisierungsrufe, um einen idToken zu erhalten
  • Info.plist-Konfiguration: Stellen Sie sicher, dass Info.plist die korrekten URL-Schemes und GIDClientID enthält
  • Überprüfen Sie das Beispielanwendung code zur Referenz

Wenn Sie Supabase Google Login auf iOS zur Planung der Authentifizierung und der Kontoflows verwenden, verbinden Sie es mit Mit @capgo/capacitor-social-login für die native Fähigkeit in @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.