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:

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

Sottosezione intitolata “Utilizzo dell'Helper di Autenticazione”

La

funzione gestisce l'intero flusso di autenticazione: authenticateWithGoogleSupabase Copia nel portapenna

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

Sottosezione intitolata “Come Funziona”

__CAPGO_KEEP_0__

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 sezione nella Guida di Configurazione Generale.

Problema di Cache del Nonce iOS

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

  1. Rilevamento AutomaticoLa funzione controlla se il nonce nel token corrisponde a quello previsto nonceDigest
  2. Ritentativo Automatico: Se la validazione fallisce, si esce automaticamente da Google e si riprova una volta
  3. Error Handling: Se anche la riprova fallisce, viene restituito un errore

Perché succede: L'accesso Google su iOS di SDK memorizza i token per le prestazioni. Quando viene restituito un token memorizzato, potrebbe essere stato generato con un diverso nonce (o nessun nonce), causando un malfunzionamento.

La soluzione: L'implementazione gestisce automaticamente questo problema escludendosi e riprovando, il che costringe Google a generare un nuovo token con il nonce corretto.

Lavoro manuale (se la riprova automatica non funziona): Copia

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

Per la documentazione completa di __CAPGO_KEEP_0__ vedere il

For the complete code reference, see the Completa la sezione di riferimento Code nella guida di configurazione generale.

L'implementazione del nonce segue il modello dal documento di riferimento di React Native Google Sign In va a Supabase's:

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

Questo authenticateWithGoogleSupabase la funzione include un retry parametro:

  • Prima chiamata (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

Questo risolve automaticamente il problema del caching dei token iOS.

Se la autenticazione fallisce:

  • Errore di nonce: La funzione riprova automaticamente - controlla i log del console per i dettagli. Se persiste, disconnetti manualmente per primo
  • 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)
  • La validazione del token fallisce: Assicurati di utilizzare mode: 'online' nel chiamata di inizializzazione per ottenere un idToken
  • Configurazione di Info.plist: Assicurati che Info.plist abbia gli schemi URL corretti e GIDClientID
  • Rivista il esempio di app code per riferimento

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