Supabase Google Login en iOS
Copia un prompt de configuración con los pasos de instalación y la guía completa en markdown para este plugin.
Introducción
Sección titulada “Introducción”Esta guía te ayudará a integrar Google Sign-In con Supabase Authentication en iOS. Se asume que ya has completado:
Implementación
Sección titulada “Implementación”La implementación completa está disponible en el de la app de ejemplo, supabaseAuthUtils.ts archivo. Esta guía explica los conceptos clave y cómo usarlo.
Uso del Authentication Helper
Sección titulada “Uso del Authentication Helper”El authenticateWithGoogleSupabase la función gestiona todo el flujo de autenticación:
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);}Cómo funciona
Sección titulada “Cómo funciona”Para una explicación detallada del flujo de autenticación, incluyendo la generación de nonce, la validación de JWT y el inicio de sesión en Supabase, consulta la sección “Cómo funciona” en la guía de Configuración General.
Advertencias importantes
Sección titulada “Advertencias importantes”Problemas de caché de tokens y nonce en iOS
Sección titulada “Problemas de caché de tokens y nonce en iOS”Problema de caché de nonce en iOS
En iOS, Google Sign-In puede cachear tokens, lo que podría causar fallos en la validación del nonce. La validateJWTToken función detecta esto y lo gestiona automáticamente:
- Detección automática: La función comprueba si el nonce en el token coincide con el esperado
nonceDigest - Reintento automático: Si la validación falla, cierra la sesión de Google automáticamente y reintenta una vez
- Gestión de errores: Si el reintento también falla, se devuelve un error
Por qué ocurre esto: El SDK de Google Sign-In en iOS cachea tokens para mejorar el rendimiento. Si se devuelve un token cacheado, puede haber sido generado con un nonce distinto (o sin nonce), causando un desajuste.
La solución: La implementación lo gestiona automáticamente cerrando la sesión y reintentando, lo que obliga a Google a generar un token nuevo con el nonce correcto.
Solución manual (si el reintento automático no funciona):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Esto garantiza que se obtenga un token nuevo con el nonce correcto.
Para la referencia completa de code, consulta la Sección de referencia completa de Code en la guía de Configuración General.
Notas importantes
Sección titulada “Notas importantes”Gestión del nonce
Sección titulada “Gestión del nonce”La implementación del nonce sigue el patrón de la documentación de React Native Google Sign In:
rawNonceva a SupabasesignInWithIdToken()- Supabase genera un hash de
rawNoncey lo compara con elnonceDigestque se incluye en el ID token de Google Sign-In nonceDigest(hash SHA-256, codificado en hex) se envía anonceparámetro en las APIs de Google Sign-In
Mecanismo de reintento automático
Sección titulada “Mecanismo de reintento automático”El authenticateWithGoogleSupabase la función incluye un retry parámetro:
- Primera llamada (
retry=false): si la validación falla, cierra sesión y reintenta una vez - Reintento de llamada (
retry=true): si la validación vuelve a fallar, devuelve un error
Esto gestiona automáticamente el problema de caché de tokens en iOS.
Solución de problemas
Sección titulada “Troubleshooting”Si la autenticación falla:
- Error de nonce mismatch: La función reintenta automáticamente; revisa los logs de la consola. Si persiste, cierra sesión manualmente primero
- Audience no válida: Verifica que tus Google Client IDs coincidan en Google Cloud Console y Supabase (tanto el de iOS como el de Web)
- Error de validación del token: Asegúrate de estar usando
mode: 'online'en la llamada a initialize para obtener un idToken - Configuración de Info.plist: Asegúrate de que Info.plist tenga los URL schemes y el GIDClientID correctos
- Revisa la app de ejemplo code como referencia
Continúa con Supabase Google Login en iOS
Sección titulada “Continúa con Supabase Google Login en iOS”Si estás usando Supabase Google Login en iOS para planificar flujos de cuenta y autenticación, conéctalo con Usando @capgo/capacitor-social-login para la capacidad nativa en Usando @capgo/capacitor-social-login, @capgo/capacitor-social-login para el detalle de implementación en @capgo/capacitor-social-login, @capgo/capacitor-passkey para los detalles de implementación en @capgo/capacitor-passkey, @capgo/capacitor-native-biometric para los detalles de implementación en @capgo/capacitor-native-biometric, y Autenticación de dos factores para el detalle de implementación en la autenticación de dos factores.