Supabase Google Login sur iOS
Copiez un prompt de configuration avec les étapes d'installation et le guide Markdown complet pour ce plug-in.
Introduction
Section intitulée « Introduction »Ce guide vous aidera à intégrer l'authentification Google avec Supabase sur iOS. Il est supposé que vous avez déjà terminé :
Implémentation
Section intitulée « Implémentation »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);}Comment ça marche
Section intitulée « Comment ça marche »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..
Avertissements importants
Section intitulée « Avertissements importants »Problèmes de Caching de Jeton iOS et de Nonce
Problèmes de mise en cache des jetons iOS et de noncesProblè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 :
- Détection AutomatiqueLa fonction vérifie si le nonce du jeton correspond à l'attente.
nonceDigest - Réessai automatiqueSi la validation échoue, il se déconnecte automatiquement de Google et réessaye une fois
- 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 tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst 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.
Notes importantes
Section intitulée « Notes importantes »Gestion de nonce
Section intitulée « Gestion de nonce »La mise en œuvre de la nonce suit le modèle de Documentation de connexion Google pour React Native:
rawNonceSupabase fait une hachage designInWithIdToken()- et le compare avec
rawNonceet le compare avec lenonceDigestqui est inclus dans le jeton d'ID de Google Sign-In nonceDigest(hachage SHA-256, encodé en hexadécimal) va vers lenonceparamètre dans les API de connexion Google
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.
): Si la validation échoue à nouveau, renvoie immédiatement une erreur
Troubleshooting
Section intitulée « Résolution des problèmes »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.