Saltare al contenuto

Login Supabase Google su iOS

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

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)..

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:

  1. Rilevamento Automatico: La 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. 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 tokens
await SocialLogin.logout({ provider: 'google' });
// Then authenticate
const 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 importante

Gestione del nonce

Nota importante

L'implementazione del nonce segue il modello dal documento 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 parametro in Google Sign-In APIs nonce Mechanismo di riprova automatico

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.

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