Zum Inhalt springen

Supabase Google Login auf iOS

Einführung

Einführung

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:

Implementierung

Einführung

Die 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.

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

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 cachen, was möglicherweise dazu führt, dass die Nonce-Validierung fehlschlägt. Die validateJWTToken Funktion erkennt dies und handhabt es automatisch:

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

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

  • rawNonce geht zu Supabases signInWithIdToken()
  • Supabase macht 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 den Google Sign-In-APIs

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.

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

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.