Supabase Google Login en iOS
Copie un prompt de configuración con los pasos de instalación y la guía de markdown completa para este plugin.
Introducción
Sección titulada “Introducción”Esta guía te ayudará a integrar la autenticación de Google con Supabase en iOS. Se asume que ya has completado:
Implementación
Sección titulada “Implementación”La implementación completa está disponible en el Usando el Asistente de Autenticación supabaseAuthUtils.ts Guía. Esta guía explica los conceptos clave y cómo utilizarla.
Utilizando la Ayuda de Autenticación
función maneja todo el flujo de autenticación:The authenticateWithGoogleSupabase La función maneja 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 de Supabase Google Login
Sección titulada “Cómo Funciona”Para una explicación detallada de cómo funciona el flujo de autenticación, incluyendo la generación de nonce, la validación de JWT y el inicio de sesión en Supabase, consulte 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. La validateJWTToken función detecta esto y lo maneja automáticamente:
- Detectación automática: La función verifica si el nonce en el token coincide con el esperado
nonceDigest - Intento Automático de RecuperaciónSi la validación falla, se desloguea automáticamente de Google y vuelve a intentarlo una vez.
- Manejo de Errores: Si el intento de recuperación también falla, se devuelve un error
¿Por qué sucede esto?: El 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ónLa implementación maneja automáticamente esto al cerrar sesión y volver a intentarlo, lo que fuerza a Google a generar un token fresco con el nonce correcto.
Trabajo manual (si no funciona el intento automático):
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Esta garantiza que se obtenga un token fresco con el nonce correcto.
Para la referencia completa code, consulte la Sección de referencia completa 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 desde Documentación de inicio de sesión de Google para React Native:
rawNonceSupabase hace una hash designInWithIdToken()- Supabase hace un hash de
rawNoncey lo compara con elnonceDigestque se incluye en el token de ID desde Google Sign-In nonceDigest(SHA-256 hash, codificado en hexadecimal) se envía a lanonceparámetro en las API de inicio de sesión de Google
Mecanismo de reintento automático
Sección titulada “Mecanismo de reintento automático”La authenticateWithGoogleSupabase función incluye un retry parámetro:
- Primera llamada (
retry=falseSi la validación falla, se deslogue automáticamente y se vuelve a intentar una vez. - Reintentar la llamada (
retry=trueSi la validación falla nuevamente, devuelve un error inmediatamente
): Si falla la validación nuevamente, devuelve un error inmediatamente
Troubleshooting
Sección titulada “Resolución de problemas”Si falla la autenticación:
- Desacuerdo de nonce: La función intenta automáticamente repetir - revisa los registros del consola para detalles. Si persiste, inicia sesión manualmente primero
- Auditorio inválido: Verifica que tus IDs de cliente de Google coincidan en ambas Google Cloud Console y Supabase (ambos IDs de cliente iOS y Web)
- Fallo de validación de token: Asegúrate de utilizar
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 el el ejemplo de aplicación code para 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-login-social para el detalle de implementación en @capgo/capacitor-social-login, @capgo/capacitor-clave de paso para el detalle de implementación en @capgo/capacitor-passkey @capgo/capacitor-nativo-biometrico 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.