Supabase Google Login sur iOS
Copiez une commande de configuration avec les étapes d'installation et le guide markdown complet pour ce plugin.
Introduction
Section intitulée « Introduction »Ce guide vous aidera à intégrer Google Sign-In avec l'authentification Supabase sur iOS. Il est supposé que vous avez déjà complété :
- le Paramètres de connexion Google iOS
- le Paramètres de connexion Google Supabase - Configuration générale.
Mise en œuvre
Section intitulée « Mise en œuvre »La mise en œuvre complète est disponible dans le fichier de l'application d'exemple. supabaseAuthUtils.ts Ce guide explique les concepts clés et comment l'utiliser.
Utilisation de l'assistant d'authentification
Section intitulée « Utilisation de l'assistant d'authentification »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);}Comment ça marche
Section intitulée “Comment ça marche”Pour une explication détaillée de la façon dont le flux d'authentification fonctionne, y compris la génération de nonce, la validation de JWT et l'inscription Supabase, voir la section « Comment ça marche » du guide de configuration générale Enjeux importants.
Section intitulée “Enjeux importants”
Problèmes de cache de jeton iOS et de nonceSection intitulée “Problèmes de cache de nonce iOS”
Problème de cache de nonce iOS__CAPGO_KEEP_0__
Sur iOS, Google Sign-In peut stocker des jetons, ce qui peut entraîner une échec de la validation de nonce. Le validateJWTToken fonction détecte cela et gère automatiquement :
- Détection automatique: La fonction vérifie si la nonce dans le jeton correspond à la nonce attendue
nonceDigest - Réessayage automatique: Si la validation échoue, elle se déconnecte automatiquement de Google et réessaye une fois
- Gestion des erreurs: Si le réessayage échoue également, une erreur est renvoyée
Pourquoi cela se produit: iOS Google Sign-In SDK stocke des jetons pour des raisons de performance. Lorsqu'un jeton stocké est retourné, il peut avoir été généré avec une nonce différente (ou aucune nonce), ce qui entraîne un désaccord.
La solution: La mise en œuvre gère automatiquement cela en se déconnectant et en réessayant, ce qui oblige Google à générer un jeton frais avec la nonce correcte.
Travail manuel (si la réessayer automatique ne fonctionne pas):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Cela garantit qu'un jeton frais est obtenu avec le bon nonce.
Pour la référence complète code, voir la section Référence complète Code de la section Paramètres généraux.
Notes importantes
Section intitulée « Notes importantes »Gestion du nonce
Section intitulée « Gestion du nonce »La mise en œuvre du nonce suit le modèle de la documentation Google Sign In React Native:
rawNoncese dirige vers Supabase’ssignInWithIdToken()- Supabase fait une hache de
rawNonceet la compare avec lenonceDigestqui est inclus dans le jeton ID de Google Sign-In nonceDigest(hachage SHA-256, encodé en hexadécimal) se dirige vers lenonceparamètre dans les API de Google Sign-In
Mécanisme de réessai automatique
Section intitulée « Mécanisme de réessai automatique »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
Cela résout automatiquement le problème de cache de jeton iOS.
Résolution des problèmes
Titre de la section « Résolution des problèmes »Si l'authentification échoue :
- Erreur de nonce: La fonction 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 l'interface Cloud Console de Google et Supabase (tous les identifiants de client iOS et Web)
- La validation du jeton échoue: Assurez-vous d'utiliser
mode: 'online'en appelant l'initialisation pour obtenir un idToken - configuration Info.plist: Assurez-vous que Info.plist a les schémas URL corrects et GIDClientID
- Examinez le exemple d'application code en référence
Continuez de Supabase Google Login sur iOS
Titre de la section « Continuez de Supabase Google Login sur iOS »Si vous utilisez Supabase Google Login sur iOS pour planifier l'authentification et les flux de compte, connectez-le avec En utilisant @capgo/capacitor-login-social pour la capacité native dans En utilisant @capgo/capacitor-login-social, @capgo/capacitor-login-social pour le détail d'implémentation dans @capgo/capacitor-login-social, @capgo/capacitor-passkey pour le détail d'implémentation dans @capgo/capacitor-passkey, @capgo/capacitor-biométrique-native pour le détail d'implémentation dans @capgo/capacitor-biométrique-native, et L'authentification à deux facteurs pour le détail d'implémentation dans L'authentification à deux facteurs.