Passer au contenu

Connexion Google Supabase sur Android

Ce guide vous aidera à intégrer la connexion Google avec l’authentification Supabase sur Android. Il est supposé que vous avez déjà terminé :

L’implémentation complète est disponible dans le fichier supabaseAuthUtils.ts de l’application exemple. Ce guide explique les concepts clés et comment l’utiliser.

Utilisation de l’assistant d’authentification

Section titled “Utilisation de l’assistant d’authentification”

La fonction authenticateWithGoogleSupabase gère l’ensemble du flux d’authentification :

import { authenticateWithGoogleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithGoogleSupabase();
if (result.success) {
console.log('Connecté :', result.user);
// Naviguez vers votre zone authentifiée
} else {
console.error('Erreur :', result.error);
}

Pour une explication détaillée du fonctionnement du flux d’authentification, incluant la génération de nonce, la validation JWT et la connexion Supabase, consultez la section Comment ça fonctionne dans le guide de configuration générale.

Pour la référence complète du code, consultez la section Référence complète du code dans le guide de configuration générale.

L’implémentation du nonce suit le modèle de la documentation React Native Google Sign In :

  • rawNonce va à signInWithIdToken() de Supabase
  • Supabase crée un hash de rawNonce et le compare avec le nonceDigest qui est inclus dans le jeton ID de Google Sign-In
  • nonceDigest (hash SHA-256, encodé en hexadécimal) va au paramètre nonce dans les API Google Sign-In

L’implémentation inclut une logique de nouvelle tentative automatique :

  • Si la validation JWT échoue à la première tentative, elle se déconnecte et réessaie une fois
  • Cela gère les cas où les jetons en cache pourraient avoir des nonces incorrects
  • Si la nouvelle tentative échoue également, une erreur est renvoyée

Si l’authentification échoue :

  • Audience invalide : Vérifiez que vos ID client Google correspondent à la fois dans Google Cloud Console et Supabase
  • Inadéquation de nonce : Vérifiez les logs de la console - la fonction réessayera automatiquement, mais vous pouvez vous déconnecter manuellement d’abord si nécessaire
  • La validation du jeton échoue : Assurez-vous d’utiliser mode: 'online' dans l’appel initialize pour obtenir un idToken
  • Consultez le code de l’application exemple pour référence