Supabase Google Login su iOS
Copia un prompt di configurazione con le istruzioni di installazione e la guida markdown completa per questo plugin.
Introduzione
Sezione intitolata “Introduzione”Questa guida ti aiuterà ad integrare Google Sign-In con l'autenticazione Supabase su iOS. Si presume che tu abbia già completato:
Impostazione
Sezione intitolata “Impostazione”L'implementazione completa è disponibile nel file dell'applicazione di esempio. Questa guida spiega i concetti chiave e come utilizzarla. supabaseAuthUtils.ts Utilizzo dell'helper di autenticazione
file dell'app di esempio. Questa guida spiega i concetti chiave e come utilizzarla.
Sezione intitolata “Utilizzo dell’aiuto di autenticazione”Il 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);}Come Funziona
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.
Caveats importanti
Sezione intitolata “Caveats importanti”Problemi di caching dei token iOS e nonce
Sezione intitolata “Problemi di caching dei token iOS e nonce”Issue di caching nonce su iOS
Sul dispositivo iOS, Google Sign-In può memorizzare i token, il che può causare il fallimento della validazione della nonce. Il validateJWTToken funzione rileva questo e lo gestisce automaticamente:
- Rilevamento automatico: La funzione controlla se la nonce nel token corrisponde a quella attesa
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 una nonce diversa (o nessuna nonce), causando un disallineamento.
La soluzione: L'implementazione gestisce automaticamente questo problema loggando fuori e riprovando, il che costringe Google a generare un nuovo token con il nonce corretto.
Manuale Workaround (se la riprova automatica non funziona):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Questo garantisce che venga ottenuto un nuovo token con il nonce corretto.
Per la documentazione completa code vedere la sezione "Documentazione completa code" nella guida di configurazione generale Complete Code Reference section in the General Setup guide.
Sottosezione intitolata "Note importanti"
Gestione del nonceSottosezione intitolata "Gestione del nonce"
L'implementazione del nonce segue il pattern da__CAPGO_KEEP_0__ documentazione di React Native Google Sign In:
rawNonceva a Supabase’ssignInWithIdToken()- 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 in Google Sign-In APIs
Mechanismo di Risorsa Automatica
Sezione intitolata “Mechanismo di Risorsa Automatica”Il authenticateWithGoogleSupabase funzione include un retry parametro:
- Prima chiamata (
retry=false): Se la validazione fallisce, si esegue automaticamente il logout e si riprova una volta - Riprovare la chiamata (
retry=true): Se la validazione fallisce nuovamente, restituisce immediatamente un errore
Questo gestisce automaticamente il problema di caching dei token iOS.
Risoluzione dei problemi
Se la registrazione non riesce:Mancanza di nonce
- : La funzione si riprova automaticamente - controlla i log del console per ulteriori dettagli. Se persiste, effettua il logout manuale primaAudience non valido
- : Verifica che gli ID Client Google siano sincronizzati in entrambi Google Cloud Console e Supabase (entrambi gli ID client iOS e Web)Troubleshooting
- La validazione del token fallisce: Assicurati di utilizzare
mode: 'online'in l'istanza di inizializzazione per ottenere un idToken - Configurazione di Info.plist: Assicurati che Info.plist abbia i corretti schemi di URL e GIDClientID
- Recensisci l'applicazione di esempio __CAPGO_KEEP_0__ example app code Continua da Supabase Google Login on iOS
Sottosezione intitolata “Continua da Supabase Google Login on iOS”
Se stai utilizzandoSupabase Google Login on iOS Supabase Google Login on iOS per pianificare l'autenticazione e le flussi di account, connettilo con Usando @capgo/capacitor-login-social per la capacità nativa in Usando @capgo/capacitor-login-social, @capgo/capacitor-login-social per il dettaglio di implementazione in @capgo/capacitor-login-social, @capgo/capacitor-passkey per il dettaglio di implementazione in @capgo/capacitor-passkey, @capgo/capacitor-biometric-nativo per il dettaglio di implementazione in @capgo/capacitor-biometric-nativo, e L'autenticazione a due fattori per il dettaglio di implementazione in L'autenticazione a due fattori.