Supabase Google Login en iOS
Copia un prompt de configuración con los pasos de instalación y la guía de markdown completa para este plugin.
Introducción
Título de la sección “Introducción”Esta guía te ayudará a integrar el inicio de sesión de Google con la autenticación de Supabase en iOS. Se supone que ya has completado:
- el Configuración de inicio de sesión de Google para iOS
- el Configuración general de inicio de sesión de Google de Supabase.
Ejecución
Sección titulada “Ejecución”La implementación completa está disponible en el archivo del ejemplo de la aplicación. Este manual explica los conceptos clave y cómo utilizarlo. supabaseAuthUtils.ts Utilizando el Ayudante de Autenticación
Sección titulada “Utilizando el Ayudante de Autenticación”
Lafunción maneja todo el flujo de autenticación: authenticateWithGoogleSupabase Copiar a portapapeles
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);}Sección titulada “¿Cómo Funciona?”
__CAPGO_KEEP_0__For a detailed explanation of how the authentication flow works, including nonce generation, JWT validation, and Supabase sign-in, see the La sección "Cómo funciona" en la guía de configuración general.
Importantes advertencias
Sección titulada “Importantes advertencias”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 puede causar que la validación de nonce fracase. El validateJWTToken función detecta esto y lo maneja automáticamente:
- Deteción automática: La función verifica si el nonce en el token coincide con el esperado
nonceDigest - Reintentos automáticos: Si falla la validación, se desconecta automáticamente de Google y vuelve a intentarlo una vez
- Error Handling: Si el intento de recuperación también falla, se devuelve un error
Por qué sucede esto: iOS Google Sign-In SDK almacena tokens para mejorar el rendimiento. Cuando se devuelve un token almacenado, puede haber sido generado con un nonce diferente (o sin nonce), lo que causa una incompatibilidad.
La solución: La implementación maneja automáticamente esto desconectándose y volviendo a intentarlo, lo que fuerza a Google a generar un token fresco con el nonce correcto.
Manual Workaround (si el intento 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 fresco con el nonce correcto.
Para la referencia completa code, consulte el Complete la sección de Referencia de Code en la Guía de Configuración General.
Notas importantes
Sección titulada “Notas importantes”Gestión de nonce
Sección titulada “Gestión de nonce”La implementación de nonce sigue el patrón de la documentación de Google Sign In para React Native va a Supabase’s:
rawNonceSupabase hace una hash designInWithIdToken()- y la compara con el
rawNonceque se incluye en el token de ID de Google Sign-InnonceDigest(hash SHA-256, codificado en hexadecimal) va a nonceDigest(hash SHA-256, codificado en hexadecimal) va alnonceparámetro en las API de inicio de sesión de Google
Mecanismo de reintento automático
Título de la sección “Mecanismo de reintento automático”El authenticateWithGoogleSupabase la función incluye un retry parámetro:
- Primera llamada (
retry=false): Si la validación falla, se cierra sesión automáticamente y se vuelve a intentar una vez - Llamada de reintento (
retry=true): Si la validación falla de nuevo, devuelve un error inmediatamente
Esto resuelve el problema de caché de tokens de iOS de manera automática.
Solución de problemas
Sección titulada “Resolución de problemas”Si falla la autenticación:
- Diferencia de nonce: La función intenta automáticamente de nuevo - revisa los registros del console para detalles. Si persiste, desconecta manualmente primero
- Público inválido: Verifica que tus identificadores de cliente de Google coincidan en ambos Google Cloud Console y Supabase (ambos identificadores de cliente iOS y Web)
- Fallo de validación de token: Asegúrate de que estés utilizando
mode: 'online'en la llamada de inicialización para obtener un idToken - Configuración de Info.plist: Asegúrate de que Info.plist tenga los esquemas de URL y GIDClientID correctos
- Revisa ejemplo de aplicación code por referencia
Sigue adelante desde Supabase Google Login en iOS
Sección titulada “Sigue adelante desde Supabase Google Login en iOS”Si estás utilizando Supabase Google Login en iOS para planificar la autenticación y los flujos de cuenta, conecta 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 el detalle de implementación en @capgo/capacitor-passkey, @capgo/capacitor-native-biometric para el detalle de implementación en @capgo/capacitor-native-biometric, y Autenticación en dos factores para el detalle de implementación en Autenticación en dos factores.