Inicio de Sesión Social en Google en iOS
Copia una línea de comando 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 Sign-In 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 en iOS
- la 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 supabaseAuthUtils.ts aplicación de ejemplo
Este guía explica los conceptos clave y cómo utilizarlo.
Sección titulada “Usando la Ayuda de Autenticación”El 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);}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
Importantes advertenciasSección titulada “Importantes advertencias”
Problemas de caché de tokens de iOS y nonce de iOS Token Caching and Nonce Issues sección titulada “Problemas de caché de tokens de iOS y nonce de iOS”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. El 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ón: Si la validación fracasa, se cierra automáticamente la sesión de Google y se intenta una vez más
- Gestión de Errores: Si el intento de recuperación también fracasa, se devuelve un error
¿Por qué sucede esto?: iOS Google Sign-In SDK cachea tokens para mejorar el rendimiento. Cuando se devuelve un token caché, puede haber sido generado con un diferente nonce (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 intentarlo, lo que fuerza a Google a generar un token fresco con el nonce correcto.
Trabajo manual (if automatic retry doesn’t work):
// 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 la sección 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 de la Documentación de inicio de sesión de Google para React Native:
rawNonceva a Supabase’ssignInWithIdToken()- Supabase hace una hash de
rawNoncey la compara con elnonceDigestque se incluye en el token de ID de inicio de sesión de Google 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”La authenticateWithGoogleSupabase función incluye un retry parámetro:
- Primera llamada (
retry=falseSi falla la validación, se cierra sesión automáticamente y se vuelve a intentar una vez - Retransmisión de llamada (
retry=trueSi falla la validación nuevamente, devuelve un error inmediatamente
Esto resuelve automáticamente el problema de caché de tokens de iOS.
Solución de problemas
Sección titulada “Solución de problemas”Si falla la autenticación:
- Desacuerdo de nonce: La función se vuelve a intentar automáticamente - consulte los registros del consola para obtener detalles. Si persiste, inicie sesión manualmente primero
- Auditorio inválido: Verifique que sus IDs de cliente de Google coincidan en ambas Google Cloud Console y Supabase (ambos IDs de cliente de iOS y Web)
- La validación de tokens falla: 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 ejemplo de aplicación code para referencia
Sigue adelante desde Supabase Google Login en iOS
Título de la sección “Sigue adelante desde Supabase Google Login en iOS”Si estás utilizando Supabase Google Login en iOS planificar la autenticación y los flujos de cuenta, conecte 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.