Supabase Google Login en iOS
Copiar 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 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 aplicación. Esta guía explica los conceptos clave y cómo utilizarlo. supabaseAuthUtils.ts Utilizando la Ayuda de Autenticación
Sección titulada “Utilizando la Ayuda 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?”
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.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 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 de iOS y nonce
Sección titulada “Problemas de caché de tokens de iOS y nonce”Problema de caché de nonce de iOS
En iOS, Google Sign-In puede cachear tokens, lo que puede causar que la validación de nonce fracase. La validateJWTToken La función detecta esto y lo maneja automáticamente:
- Deteción automáticaLa función verifica si el nonce en el token coincide con el esperado
nonceDigest - Reintentos automáticos: Si falla la validación, se cierra automáticamente sesión en Google y se vuelve a intentar una vez
- Error Handling: Si el intento de recuperación también falla, se devuelve un error
Por qué sucede esto: El inicio de sesión de Google en iOS 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 al cerrar sesión y volver a intentar, lo que fuerza a Google a generar un token fresco con el nonce correcto.
Trabajo manual (si la recuperación automática no funciona): Copiar a portapapeles
// Logout first to clear cached tokensawait SocialLogin.logout({ provider: 'google' });
// Then authenticateconst result = await authenticateWithGoogleSupabase();Para la referencia completa de __CAPGO_KEEP_0__, consulte el
For the complete code reference, see the Complete la sección de Referencia Code en la Guía de Configuración General.
Observaciones importantes
Sección titulada “Observaciones importantes”Manipulación de nonce
Sección titulada “Manipulació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 suma de hash designInWithIdToken()- y la compara con el
rawNonceque se incluye en el token de ID de Google Sign-InnonceDigest(suma de hash SHA-256, codificada en hexadecimal) va al nonceDigestID token from Google Sign-Innoncepará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 automáticamente el problema de caché de tokens de iOS.
Solución de problemas
Sección titulada “Resolución de problemas”Si falla la autenticación:
- Coincidencia de nonce: La función intenta automáticamente una nueva solicitud - revisa los registros de la consola para obtener más detalles. Si persiste, inicia sesión manualmente primero
- Auditorio inválido: Verifica que tus identificadores de cliente de Google coincidan en tanto en el Console de Cloud de Google como en Supabase (ambos identificadores de cliente iOS y Web)
- Fallas en la validación del 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 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-login-social para la capacidad nativa en Usando @capgo/capacitor-login-social, @capgo/capacitor-login-social para el detalle de implementación en @capgo/capacitor-login-social, @capgo/capacitor-clave-llave 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.