Login Supabase Google su iOS
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Introduzione
Sottosezione intitolata “Introduzione”Questa guida ti aiuterà a integrare l'accesso con Google con l'autenticazione di Supabase su iOS. Si presume che tu abbia già completato:
- il setup di accesso Google per iOS
- il setup di accesso Google di Supabase - Configurazione generale.
Esecuzione
Sottosezione intitolata “Esecuzione”The complete implementation is available in the __CAPGO_KEEP_0__ file. This guide explains the key concepts and how to use it. L'implementazione completa è disponibile nel __CAPGO_KEEP_0__ file. Questa guida spiega i concetti chiave e come utilizzarli. supabaseAuthUtils.ts Using the Authentication Helper
Utilizzare l'aiuto di autenticazione
Section titled “Using the Authentication Helper”Sottosezione intitolata “Utilizzare l'aiuto di autenticazione” authenticateWithGoogleSupabase The
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);}function handles the entire authentication flow:
La funzione gestisce l'intero flusso di autenticazione:Copy to clipboard Copia nel portapenne (Ctrl+C o Cmd+C per copiare, Ctrl+V o Cmd+V per incollare)..
Caveats Importanti
Sezione intitolata “Caveats Importanti”Problemi di Cache Token e Nonce su iOS
Sezione intitolata “Problemi di Cache Token e Nonce su iOS”Problema di Cache Nonce su iOS
Su iOS, Google Sign-In può cache 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 a quello previsto
nonceDigest - Ritentativo Automatico: Se la validazione fallisce, si esce automaticamente da Google e si riprova una volta
- Gestione degli Errori: Se anche il tentativo di riprova fallisce, viene restituito un errore
Perché ciò accade: iOS Google Sign-In SDK memorizza i token per migliorare le prestazioni. Quando viene restituito un token memorizzato, potrebbe essere stato generato con un diverso nonce (o nessun nonce), causando un disallineamento.
La soluzione: L'implementazione gestisce automaticamente questo problema facendo logout e riprovando, il che costringe Google a generare un nuovo token con il nonce corretto.
Soluzione manuale (se la riprova automatica non funziona): Copia nella clipboard
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Per la documentazione completa di __CAPGO_KEEP_0__, vedere la sezione "Documentazione completa di __CAPGO_KEEP_0__" nella guida di configurazione generale
For the complete code reference, see the Complete Code Reference section in the General Setup guide.
For the complete __CAPGO_KEEP_0__ reference, see the
Nota importanteGestione del nonce
Nota importanteL'implementazione del nonce segue il modello dal documento di React Native Google Sign In va a Supabase's:
rawNonceSupabase crea un hash disignInWithIdToken()- e lo confronta con il
rawNonceche è incluso nel token ID da Google Sign-InnonceDigest(hash SHA-256, codificato in esadecimale) va al nonceDigestparametro in Google Sign-In APIsnonceMechanismo di riprova automatico
Il meccanismo di riprova automatico
Sezione intitolata “Mechanismo di riprova automatica”Il authenticateWithGoogleSupabase la funzione include un retry parametro:
- Chiamata iniziale (
retry=false): Se la validazione fallisce, si esce automaticamente e si riprova una volta - Chiamata di riprova (
retry=true): Se la validazione fallisce nuovamente, restituisce immediatamente un errore
Ciò risolve automaticamente il problema di caching dei token iOS.
Risoluzione dei problemi
Sezione intitolata “Risoluzione dei problemi”Se la autenticazione fallisce:
- Mancato nonce: La funzione riprova automaticamente - controlla i log del console per ulteriori dettagli. Se persiste, disconnetti manualmente prima
- Audience non valida: Verifica che i Client ID Google siano coerenti in entrambi il Console di Google Cloud e Supabase (entrambi i Client ID iOS e Web)
- Fallimento della validazione del token: Assicurati di utilizzare
mode: 'online'in la chiamata di inizializzazione per ottenere un idToken - Configurazione di Info.plist: Assicurati che Info.plist abbia gli schemi URL corretti e GIDClientID
- Rivedi l'applicazione di esempio __CAPGO_KEEP_0__ example app code Nonce mismatch