Saltar al contenido

Supabase Google Login en iOS

GitHub

Instale, sincronice y siga la guía completa de origen desde una sola línea de comando.

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”

El

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);
}

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.

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:

  1. Detección Automática: La función verifica si el nonce en el token coincide con el esperado nonceDigest
  2. Reintentos Automáticos: Si la validación falla, se cierra automáticamente la sesión de Google y se reintentan una vez
  3. 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 tokens
await SocialLogin.logout({ provider: 'google' });
// Then authenticate
const 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.

La implementación de nonce sigue el patrón de la documentación de React Native Google Sign In:

  • rawNonce se dirige a Supabase’s signInWithIdToken()
  • Supabase crea una huella digital de rawNonce y la compara con el nonceDigest que se incluye en el token de ID de Google Sign-In
  • nonceDigest que se envía al nonce parámetro en las API de Google Sign-In

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.

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