Supabase Google Login su iOS
Copia un prompt di setup con i passaggi di installazione e la guida markdown completa per questo plugin.
Introduzione
Sezione intitolata “Introduzione”Questa guida ti aiuterà a integrare Google Sign-In con Supabase Authentication su iOS. Si assume che tu abbia già completato:
Implementazione
Sezione intitolata “Implementazione”L'implementazione completa è disponibile nel file dell'app di supabaseAuthUtils.ts esempio. Questa guida spiega i concetti chiave e come usarlo.
Utilizzo dell'Authentication Helper
Sezione intitolata “Utilizzo dell'Authentication Helper”L'oggetto authenticateWithGoogleSupabase la funzione gestisce l'intero flusso di autenticazione:
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);}Come funziona
Sezione intitolata “Come funziona”Per una spiegazione dettagliata del flusso di autenticazione, inclusa la generazione del nonce, la validazione JWT e il sign-in con Supabase, consulta la sezione Come funziona nella guida alla configurazione generale.
Avvertenze importanti
Sezione intitolata “Avvertenze importanti”Caching dei token iOS e problemi con il nonce
Sezione intitolata “Caching dei token iOS e problemi con il nonce”Problema di caching del nonce su iOS
Su iOS, Google Sign-In può mettere in cache i token, causando potenzialmente il fallimento della validazione del nonce. La validateJWTToken funzione rileva il problema e lo gestisce automaticamente:
- Rilevamento automatico: La funzione controlla se il nonce nel token corrisponde a quello atteso
nonceDigest - Riprova automatica: Se la validazione fallisce, effettua automaticamente il logout da Google e riprova una volta
- Gestione degli errori: Se anche il secondo tentativo fallisce, viene restituito un errore
Perché accade: SDK di Google Sign-In su iOS mette in cache i token per migliorare le performance. Se viene restituito un token in cache, potrebbe essere stato generato con un nonce diverso (o senza nonce), causando un mismatch.
La soluzione: L'implementazione gestisce tutto automaticamente effettuando il logout e riprovando, forzando Google a generare un nuovo token con il nonce corretto.
Soluzione manuale (se il riprovo automatico non funziona):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Questo assicura l'ottenimento di un nuovo token con il nonce corretto.
Per il riferimento completo a code, consulta la Sezione Reference completa di Code nella guida General Setup.
Note importanti
Sezione intitolata “Note importanti”Gestione del Nonce
Sezione intitolata “Gestione del Nonce”L'implementazione del nonce segue il pattern della documentazione di React Native Google Sign In:
rawNonceva verso quella di SupabasesignInWithIdToken()- Supabase crea un hash di
rawNoncee lo confronta con ilnonceDigestche è incluso nell'ID token di Google Sign-In nonceDigest(hash SHA-256, codificato in hex) viene inviato anonceparametro nelle API di Google Sign-In
Meccanismo di Retry Automatico
Sezione intitolata “Meccanismo di Retry Automatico”L'oggetto authenticateWithGoogleSupabase la funzione include un retry parametro:
- Prima chiamata (
retry=false): se la validazione fallisce, effettua il logout automatico e riprova una volta - Chiamata di retry (
retry=true): se la validazione fallisce di nuovo, restituisce immediatamente un errore
Questo gestisce automaticamente il problema del caching del token su iOS.
Risoluzione problemi
Sezione intitolata “Troubleshooting”Se l'autenticazione fallisce:
- Nonce mismatch: la funzione riprova automaticamente - controlla i log in console per i dettagli. Se il problema persiste, esegui prima il logout manualmente
- Audience non valida: verifica che i Google Client ID corrispondano sia in Google Cloud Console che in Supabase (sia gli ID client iOS che Web)
- La validazione del token è fallita: assicurati di usare
mode: 'online'nella chiamata di initialize per ottenere un idToken - Configurazione Info.plist: assicurati che Info.plist abbia i corretti URL schemes e GIDClientID
- Controlla il app di esempio code come riferimento
Continua con Supabase Google Login su iOS
Sezione intitolata “Continua con Supabase Google Login su iOS”Se stai usando Supabase Google Login su iOS per pianificare i flussi di autenticazione e account, collegalo con Utilizzo di @capgo/capacitor-social-login per la funzionalità nativa in Utilizzo di @capgo/capacitor-social-login, @capgo/capacitor-social-login per i dettagli di implementazione in @capgo/capacitor-social-login, @capgo/capacitor-passkey per i dettagli di implementazione in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric per i dettagli di implementazione in @capgo/capacitor-native-biometric, e Autenticazione a due fattori per i dettagli sull'implementazione dell'autenticazione a due fattori.