Zum Inhalt springen

Supabase Google Login auf iOS

GitHub

Einführung

Einleitung

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:

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

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.

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:

  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, wird automatisch aus Google ausgeloggt und einmal wiederholt
  3. 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 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 von der React Native Google Sign In Dokumentation:

  • rawNonce geht zu Supabases 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 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
  • 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.

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

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.