Saltare al contenuto

Supabase Google Login su iOS

GitHub

Questa guida ti aiuterà a integrare l'accesso con Google con l'autenticazione di Supabase su iOS. Si presume che tu abbia già completato:

La completa implementazione è disponibile nel file dell'applicazione di esempio. Questa guida spiega i concetti chiave e come utilizzarla. supabaseAuthUtils.ts L'utilizzo dell'aiuto di autenticazione

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

Per una spiegazione dettagliata di come funziona il flusso di autenticazione, compresa la generazione del nonce, la validazione del JWT e l'accesso a Supabase, vedere la sezione Come funziona nella guida di configurazione generale.

Issue di caching del nonce iOS

Sul sistema operativo iOS, Google Sign-In può memorizzare i token, il che potrebbe causare la fallita validazione del nonce. La validateJWTToken funzione rileva questo e lo gestisce automaticamente:

  1. Rilevamento Automatico: La funzione controlla se il nonce nel token corrisponde a quello previsto nonceDigest
  2. Ritenta Automaticamente: Se la validazione fallisce, si esce automaticamente da Google e si ritenta una volta
  3. Gestione degli Errori: Se anche la seconda tentativa fallisce, viene restituito un errore

Perché succede: Il sistema operativo 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 uscire e riprovando, il che costringe Google a generare un token fresco con il nonce corretto.

Soluzione di lavoro manuale (se il riprova automatico non funziona):

// Logout first to clear cached tokens
await SocialLogin.logout({ provider: 'google' });
// Then authenticate
const result = await authenticateWithGoogleSupabase();

Ciò assicura un token fresco ottenuto con il nonce corretto.

Per la documentazione completa code, vedere la Documentazione completa Code nella sezione Impostazioni generali.

L'implementazione del nonce segue il pattern dalla documentazione di React Native Google Sign In:

  • rawNonce va a Supabase’s signInWithIdToken()
  • Supabase crea un hash di rawNonce e lo confronta con il nonceDigest che è incluso nel token ID da Google Sign-In
  • nonceDigest (hash SHA-256, codificato in esadecimale) va al nonce parametro in API di Google Sign-In

Il authenticateWithGoogleSupabase funzione include un retry parametro:

  • Prima chiamata (retry=falseIf la validazione fallisce, si esegue automaticamente il logout e si riprova una volta
  • Riprovare la chiamata (retry=trueSe la validazione fallisce nuovamente, restituisce immediatamente un errore

Questo gestisce automaticamente il problema di caching dei token iOS.

Se la autenticazione fallisce:

  • Discrepanza di nonce: La funzione riprova automaticamente - controlla i log del console per ulteriori dettagli. Se persiste, esegui il logout manualmente per primo
  • Audience non valida: Verifica che gli ID Client Google corrispondano in entrambi il Cloud Console di Google e Supabase (entrambi gli ID client iOS e Web)
  • La validazione dei token fallisce: Assicurati di utilizzare mode: 'online' in l'invocazione di inizializzazione per ottenere un idToken
  • Configurazione di Info.plist: Assicurati che Info.plist abbia i corretti schemi di URL e GIDClientID
  • Recensisci l'esempio di app __CAPGO_KEEP_0__ example app code Continua da Supabase Google Login on iOS

Sottosezione 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, connettilo con Si stai utilizzando Supabase Google Login on iOS per pianificare l'autenticazione e le flussi di account, connettilo con Usando @capgo/capacitor-login sociale per la capacità nativa in Usando @capgo/capacitor-login sociale, @capgo/capacitor-login sociale per il dettaglio di implementazione in @capgo/capacitor-login sociale, @capgo/capacitor-passkey per il dettaglio di implementazione in @capgo/capacitor-passkey, @capgo/capacitor-biometrica nativa per il dettaglio di implementazione in @capgo/capacitor-biometrica nativa, e Autenticazione a due fattori per il dettaglio di implementazione in Autenticazione a due fattori.