Supabase Google Login su iOS
Copia un prompt di impostazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Introduzione
Sezione intitolata “Introduzione”Questa guida ti aiuterà a integrare l'accesso Google con l'autenticazione Supabase su iOS. Si presume che tu abbia già completato:
Implementazione
Sezione intitolata “Implementazione”La completa implementazione è disponibile nel file dell'applicazione di esempio. Questa guida spiega i concetti chiave e come utilizzarla. supabaseAuthUtils.ts L'uso dell'helper di autenticazione
Using the Authentication Helper
Sezione intitolata “Utilizzo dell’aiuto di autenticazione”La authenticateWithGoogleSupabase 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);}Sezione intitolata “Come funziona” Per una spiegazione dettagliata di come funziona il flusso di autenticazione, compresa la generazione di nonce, la validazione di JWT e l’accesso a Supabase, vedere la.
Sezione Come funziona nella guida di configurazione generale
Importanti avvertenzeSezione intitolata “Importanti avvertenze”
ISSUE Token di caching e problemi di nonce su iOSProblema di Cache Nonce su iOS
Su iOS, Google Sign-In può memorizzare i token, il che può causare la fallita della validazione del nonce. Il validateJWTToken funzione rileva questo e lo gestisce automaticamente:
- Rilevamento Automatico: La funzione controlla se il nonce nel token corrisponde al nonce previsto
nonceDigest - Ritentativo Automatico: Se la validazione fallisce, si esce automaticamente da Google e si tenta nuovamente una volta
- Gestione degli Errori: Se anche il ritentativo fallisce, viene restituito un errore
Perché succede: Google Sign-In su iOS SDK memorizza i token per migliorare le prestazioni. Quando viene restituito un token memorizzato, potrebbe essere stato generato con un nonce diverso (o nessun nonce), causando un disallineamento.
La soluzione: La implementazione gestisce automaticamente questo problema, effettuando il logout e riprovando, il che costringe Google a generare un nuovo token con il nonce corretto.
Soluzione Manuale (se la riprova automatica non funziona):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Questo garantisce l'ottenimento di un nuovo token con il nonce corretto.
Per la documentazione completa del code vedere la sezione Documentazione completa del Code.
Note importanti
Sottosezione intitolata “Note importanti”Gestione del nonce
Sottosezione intitolata “Gestione del nonce”L'implementazione del nonce segue il pattern dal Documentazione di reattiva Google Sign In:
rawNonceva a SupabasesignInWithIdToken()- Supabase crea un hash di
rawNoncee lo confronta con ilnonceDigestche è incluso nel token ID da Google Sign-In nonceDigest(hash SHA-256, codificato in esadecimale) va alnonceparametro nei Google Sign-In APIs
Mecanismo di Risorsa Automatica
Sottosezione intitolata “Mecanismo di Risorsa Automatica”Il authenticateWithGoogleSupabase funzione include un retry parametro:
- Prima chiamata (
retry=falseSe la validazione fallisce, si esce automaticamente e si riprova una volta - Chiamata di riprova (
retry=trueSe la validazione fallisce nuovamente, restituisce immediatamente un errore
Questo gestisce automaticamente il problema di caching dei token iOS.
Risolvere i problemi
Sezione intitolata “Risolvere i problemi”Se la autenticazione fallisce:
- Mancanza di nonceLa funzione si riprova automaticamente - controlla i log del console per i dettagli. Se persiste, esegui il logout manualmente per primo
- Audience non valida: Verifica che i Client ID Google corrispondano in entrambi il Cloud Console di Google e Supabase (entrambi i Client ID iOS e Web)
- La validazione del token fallisce: Assicurati di utilizzare
mode: 'online'Capacitor - in l'istanza di inizializzazione per ottenere un idTokenConfigurazione di Info.plist
- : Assicurati che Info.plist abbia gli schemi di URL e GIDClientID corretti example app code esempio di app __CAPGO_KEEP_0__
per riferimento
Continua da Supabase Google Login on iOSSezione intitolata “Continua da Supabase Google Login on iOS” Se stai utilizzando Supabase Google Login on iOS per pianificare l'autenticazione e le flussi di account, connettiti con Utilizza @capgo/capacitor-login sociale per la capacità nativa in Utilizza @capgo/capacitor-login sociale Utilizza @capgo/capacitor-login sociale per il dettaglio di implementazione in @capgo/capacitor-login sociale Utilizza @capgo/capacitor-chiave pass per il dettaglio di implementazione in @capgo/capacitor-chiave pass Utilizza @capgo/capacitor-biometria nativa per il dettaglio di implementazione in @capgo/capacitor-biometria nativa, e Autenticazione a due fattori per il dettaglio di implementazione in Autenticazione a due fattori