Supabase Google Login en iOS
Copie una línea de comando con los pasos de instalación y la guía markdown completa para este plugin.
Sección titulada “Introducción”
Esta guía le ayudará a integrar el inicio de sesión de Google con la autenticación de Supabase en iOS. Se asume que ya ha completado:Instale, sincronice y siga la guía completa de origen desde una sola línea de comando.
- el Configuración de inicio de sesión de iOS de Google
- el Configuración general de inicio de sesión de Google de Supabase.
Implementación
Sección titulada “Implementación”La implementación completa está disponible en el archivo del ejemplo de aplicación. Esta guía explica los conceptos clave y cómo utilizarlo. supabaseAuthUtils.ts Usando la Ayuda de Autenticación
Sección titulada “Usando la Ayuda de Autenticación”
ElEl authenticateWithGoogleSupabase 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
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 la sección Cómo Funciona en la guía de configuración general.
Caveats importantes
Sección titulada “Caveats 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 puede causar que la validación de nonce fracase. validateJWTToken función detecta esto y maneja automáticamente esto:
- Detección Automática: La función verifica si el nonce en el token coincide con el esperado
nonceDigest - Reintentos Automáticos: Si la validación falla, se cierra automáticamente la sesión de Google y se reintentan una vez
- Gestión de Errores: Si el reintentar 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 provoca un desacuerdo.
La solución: La implementación maneja automáticamente esto al cerrar sesión y reintentar, lo que fuerza a Google a generar un token fresco con el nonce correcto.
Trabajo Manual para Solucionar el Problema (si no funciona el intento automático):
// 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 de code, consulte la sección Referencia completa 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 React Native Google Sign In:
rawNoncese dirige a Supabase’ssignInWithIdToken()- Supabase crea una huella digital de
rawNoncey la compara con elnonceDigestque se incluye en el token de ID de Google Sign-In nonceDigestque se envía alnonceparámetro en las API de Google Sign-In
Mecanismo de Retransmisión Automática
Sección titulada “Mecanismo de Retransmisión Automática”La authenticateWithGoogleSupabase 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 - Retry call (
retry=true): Si falla la validación nuevamente, devuelve un error inmediatamente
This handles the iOS token caching issue automatically.
Troubleshooting
Sección titulada “Troubleshooting”Si falla la autenticación:
- Diferencia de nonce: La función intenta automáticamente con un nuevo intento - revisa los registros del consola para detalles. Si persiste, inicia sesión manualmente primero
- Audencia inválida: Verifica que tus IDs de cliente de Google coincidan en ambas consolas de Google Cloud y Supabase (ambos IDs de cliente iOS y web)
- Falla en la validación del token: Asegúrate de que estás utilizando
mode: 'online'en el llamado de inicialización para obtener un idToken - Configuración de Info.plist: Asegúrese de que Info.plist tenga los esquemas de URL correctos y GIDClientID
- Revisar el ejemplo de aplicación code para referencia
Siga adelante desde Supabase Google Login en iOS
Sección titulada “Siga adelante desde Supabase Google Login en iOS”Si está utilizando Supabase Google Login en iOS para planificar la autenticación y los flujos de cuenta, conéctelo con Usando @capgo/capacitor-social-login para la capacidad nativa en @capgo/capacitor-login-social @capgo/capacitor-login-social para el detalle de implementación en @capgo/capacitor-login-social @capgo/capacitor-passkey para el detalle de implementación en @capgo/capacitor-passkey @capgo/capacitor-biométrica-nativa para el detalle de implementación en @capgo/capacitor-biométrica-nativa, y Autenticación de dos factores para el detalle de implementación en Autenticación de dos factores