Passer à la navigation

Supabase Google Login sur iOS

GitHub

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

La mise en œuvre complète est disponible dans le l'application d'exemple supabaseAuthUtils.ts Ce guide explique les principaux concepts et comment l'utiliser.

Section intitulée « Utilisation de l'Aide à l'Authentification »

Section titled “Using the Authentication Helper”

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

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

Pour une explication détaillée de la manière dont le flux d'authentification fonctionne, y compris la génération de nonce, la validation de JWT et l'inscription Supabase, consultez le La section Fonctionnement dans le guide de configuration générale..

Problèmes de Caching de Jeton iOS et de Nonce

Problèmes de mise en cache des jetons iOS et de nonces

Problème de cache de nonce sur iOS

Sur iOS, Sign-In Google peut stocker des jetons, ce qui peut entraîner un échec de la validation de nonce. Le validateJWTToken La fonction détecte cela et gère automatiquement cela :

  1. Détection AutomatiqueLa fonction vérifie si le nonce du jeton correspond à l'attente. nonceDigest
  2. Réessai automatiqueSi la validation échoue, il se déconnecte automatiquement de Google et réessaye une fois
  3. Gestion des erreursSi le réessai échoue également, une erreur est renvoyée

Pourquoi cela se produit: iOS Google Sign-In SDK caches tokens for performance. When a cached token is returned, it may have been generated with a different nonce (or no nonce), causing a mismatch.

La solutionL'implémentation gère automatiquement cela en se déconnectant et en réessayant, ce qui oblige Google à générer un jeton frais avec le nonce correct.

Solution de contournement manuelle (si le réessai automatique ne fonctionne pas):

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

Cela garantit que le jeton frais est obtenu avec le nonce correct.

Pour la référence complète code, voir la La section de référence complète Code dans le guide de configuration générale.

La mise en œuvre de la nonce suit le modèle de Documentation de connexion Google pour React Native:

  • rawNonce Supabase fait une hachage de signInWithIdToken()
  • et le compare avec rawNonce et le compare avec le nonceDigest qui est inclus dans le jeton d'ID de Google Sign-In
  • nonceDigest (hachage SHA-256, encodé en hexadécimal) va vers le nonce paramètre dans les API de connexion Google

Le authenticateWithGoogleSupabase fonction inclut un retry paramètre :

  • Première appel (retry=falseSi la validation échoue, se déconnecte automatiquement et réessaye une fois.
  • Réessayer l'appel (retry=trueSi la validation échoue à nouveau, retourne immédiatement une erreur.

): Si la validation échoue à nouveau, renvoie immédiatement une erreur

Si l'authentification échoue :

  • Erreur de nonce: La fonction se réessaye automatiquement - consultez les journaux de console pour plus de détails. Si cela persiste, déconnectez-vous manuellement en premier
  • Audience non valide: Vérifiez que vos identifiants Client Google correspondent dans les deux Google Cloud Console et Supabase (tous les identifiants clients iOS et Web)
  • Échec de la validation du jeton: Assurez-vous d'utiliser mode: 'online' à l'appel d'initialisation pour obtenir un idToken
  • Configuration d'Info.plist: Assurez-vous que Info.plist comporte les schémas URL et GIDClientID corrects
  • Révisez l' exemple d'application code en référence

Continuez avec Supabase Google Login sur iOS

Sous-titre “Continuez avec Supabase Google Login sur iOS”

Si vous utilisez Supabase Google Login sur iOS pour planifier l'authentification et les flux de compte, connectez-l’avec En utilisant @capgo/capacitor-social-login pour la capacité native dans En utilisant @capgo/capacitor-social-login, @capgo/capacitor-connexion-social pour le détail d'implémentation dans @capgo/capacitor-social-login, @capgo/capacitor-passkey pour les détails d'implémentation dans @capgo/capacitor-passkey @capgo/capacitor-native-biometrique pour les détails d'implémentation dans @capgo/capacitor-native-biometric, et Authentification à deux facteurs pour les détails d'implémentation dans Authentification à deux facteurs.