Vai al contenuto

Google Login di Supabase su Android

Questa guida ti aiuterà a integrare Google Sign-In con l’autenticazione Supabase su Android. Si presume che tu abbia già completato:

L’implementazione completa è disponibile nel file supabaseAuthUtils.ts dell’app di esempio. Questa guida spiega i concetti chiave e come utilizzarlo.

La funzione authenticateWithGoogleSupabase gestisce l’intero flusso di autenticazione:

import { authenticateWithGoogleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithGoogleSupabase();
if (result.success) {
console.log('Accesso effettuato:', result.user);
// Naviga verso la tua area autenticata
} else {
console.error('Errore:', result.error);
}

Per una spiegazione dettagliata di come funziona il flusso di autenticazione, inclusa la generazione del nonce, la validazione JWT e l’accesso a Supabase, consulta la sezione Come Funziona nella guida alla Configurazione Generale.

Per il riferimento completo al codice, consulta la sezione Riferimento Completo al Codice nella guida alla Configurazione Generale.

L’implementazione del nonce segue il modello della documentazione React Native Google Sign In:

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

L’implementazione include una logica di retry automatico:

  • Se la validazione JWT fallisce al primo tentativo, effettua il logout e riprova una volta
  • Questo gestisce i casi in cui i token memorizzati nella cache potrebbero avere nonce errati
  • Se anche il retry fallisce, viene restituito un errore

Se l’autenticazione fallisce:

  • Audience non valido: Verifica che i tuoi Google Client ID corrispondano sia nella Console Google Cloud che in Supabase
  • Nonce non corrispondente: Controlla i log della console - la funzione riproverà automaticamente, ma puoi effettuare manualmente il logout prima se necessario
  • Validazione del token fallita: Assicurati di utilizzare mode: 'online' nella chiamata initialize per ottenere un idToken
  • Consulta il codice dell’app di esempio per riferimento