Saltar al contenido

Supabase Google Login en iOS

GitHub

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:

La implementación completa está disponible en el archivo del ejemplo de la aplicación. Este manual explica los conceptos clave y cómo utilizarlo. supabaseAuthUtils.ts Utilizando el Ayudante de Autenticación

Sección titulada “Utilizando el Ayudante de Autenticación”

La

funció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?”

__CAPGO_KEEP_0__

For a detailed explanation of how the authentication flow works, including nonce generation, JWT validation, and Supabase sign-in, see the 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. El validateJWTToken función detecta esto y lo maneja automáticamente:

  1. Deteción automática: La función verifica si el nonce en el token coincide con el esperado nonceDigest
  2. Reintentos automáticos: Si falla la validación, se desconecta automáticamente de Google y vuelve a intentarlo una vez
  3. Error Handling: Si el intento de recuperación 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 causa una incompatibilidad.

La solución: La implementación maneja automáticamente esto desconectándose y volviendo a intentarlo, lo que fuerza a Google a generar un token fresco con el nonce correcto.

Manual Workaround (si el intento automático no funciona):

// 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 code, consulte el Complete la sección de Referencia de Code en la Guía de Configuración General.

La implementación de nonce sigue el patrón de la documentación de Google Sign In para React Native va a Supabase’s:

  • rawNonce Supabase hace una hash de signInWithIdToken()
  • y la compara con el rawNonce que se incluye en el token de ID de Google Sign-In nonceDigest (hash SHA-256, codificado en hexadecimal) va a
  • nonceDigest (hash SHA-256, codificado en hexadecimal) va al nonce parámetro en las API de inicio de sesión de Google

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 el problema de caché de tokens de iOS de manera automática.

Si falla la autenticación:

  • Diferencia de nonce: La función intenta automáticamente de nuevo - revisa los registros del console para detalles. Si persiste, desconecta manualmente primero
  • Público inválido: Verifica que tus identificadores de cliente de Google coincidan en ambos Google Cloud Console y Supabase (ambos identificadores de cliente iOS y Web)
  • Fallo de validación de 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 ejemplo de aplicación code por 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-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.