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 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”

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

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.

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:

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

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 suma de hash de signInWithIdToken()
  • y la compara con el rawNonce que se incluye en el token de ID de Google Sign-In nonceDigest (suma de hash SHA-256, codificada en hexadecimal) va al
  • nonceDigest ID token from Google Sign-In 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 automáticamente el problema de caché de tokens de iOS.

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.