Supabase Apple Login en Android
Copia un prompt de configuración con los pasos de instalación y la guía completa en markdown para este plugin.
Requisitos
Sección titulada “Prerrequisitos”Esta guía te ayudará a integrar Apple Sign-In con Supabase Authentication en Android. Se asume que ya has completado:
Paso 1: Desplegar la Edge Function de backend
Sección titulada “Paso 1: Desplegar la Edge Function del backend”Primero, debemos desplegar la Supabase Edge Function que gestionará el callback de OAuth de Apple.
-
Navega al directorio de tu proyecto de Supabase
Ventana de terminal cd your-project/supabase -
Crea la Edge Function (if it doesn’t exist)
Ventana de terminal supabase functions new apple-signin-callback -
Copia la edge function code
La implementación completa de la edge function está disponible en la app de ejemplo.
Copia los siguientes archivos a tu proyecto:
supabase/functions/apple-signin-callback/index.ts- Edge function principal codesupabase/functions/apple-signin-callback/deno.json- Import map para dependencias (incluye lajoselibrería para la firma de JWT)
-
Configura la verificación de JWT
El endpoint de callback de Apple OAuth debe ser público (sin autenticación) porque Apple redirigirá hacia él. Actualiza tu
supabase/config.tomlarchivo:[functions.apple-signin-callback]enabled = trueverify_jwt = false # Important: Set to false for public OAuth callbackimport_map = "./functions/apple-signin-callback/deno.json"entrypoint = "./functions/apple-signin-callback/index.ts" -
Desplegar la función
Ventana de terminal supabase functions deploy apple-signin-callback -
Obtener la URL de tu función
Tras el despliegue, obtendrás una URL como esta:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callbackSi no la encuentras, puedes hacer lo siguiente:
- Abrir
https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions - Haz clic en el
apple-signin-callbackURL de la función para copiarla.
- Abrir
Paso 2: Configurar el Apple Developer Portal
Sección titulada “Paso 2: Configurar Apple Developer Portal”Ahora debemos configurar el Apple Developer Portal con la URL del backend y obtener todos los valores necesarios.
-
Sigue la guía de configuración de Apple Login para Android
Completa la guía de configuración de Apple Login para Android para:
- Crear un Service ID
- Generar una clave privada (archivo .p8)
- Obtener tu Team ID y Key ID
- Configurar la Return URL
-
Configurar la Return URL en el Apple Developer Portal
Al configurar la Return URL en el Apple Developer Portal (paso 6.9 de la guía de Apple), usa la URL de tu Supabase Edge Function:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callbackImportante: usa la URL de Supabase Edge Function
NO uses la URL de redirección de la guía de configuración de Apple Login para Android. Esa guía usa una URL de servidor backend personalizada. Para la integración con Supabase, debes usar tu URL de Supabase Edge Function en su lugar.
-
Recopila todos los valores necesarios
Tras completar la guía de configuración de Apple, deberías tener:
- APPLE_TEAM_ID: Tu Apple Developer Team ID
- APPLE_KEY_ID: El Key ID del Apple Developer Portal
- APPLE_PRIVATE_KEY: Tu archivo de clave privada .p8 (debe estar en base64)
- ANDROID_SERVICE_ID: Tu Apple Service ID (ej.,
com.example.app.service) - BASE_REDIRECT_URL: Tu URL de deep link (ej.,
capgo-demo-app://path)
Paso 3: Configurar los Secrets de Supabase
Sección titulada “Paso 3: Configurar secrets de Supabase”Ahora debemos configurar las variables de entorno (secrets) para la Supabase Edge Function.
-
Codifica tu clave privada
Primero, codifica tu clave privada de Apple (archivo .p8) a base64:
Ventana de terminal base64 -i AuthKey_XXXXX.p8Copia todo el resultado (es una sola cadena larga).
-
Configura los secrets usando Supabase CLI
Ventana de terminal supabase secrets set APPLE_TEAM_ID=your_team_idsupabase secrets set APPLE_KEY_ID=your_key_idsupabase secrets set APPLE_PRIVATE_KEY=your_base64_encoded_keysupabase secrets set ANDROID_SERVICE_ID=your.service.idsupabase secrets set BASE_REDIRECT_URL=your-app://pathsupabase secrets set APPLE_REDIRECT_URI=https://your-project-ref.supabase.co/functions/v1/apple-signin-callback -
Alternativa: Configura los secrets en el Supabase Dashboard
Si prefieres usar el dashboard:
- Ve al dashboard de tu proyecto en Supabase
- Navega a Edge Functions → Configuración → Secrets
- Añade cada variable secreta con su valor
Paso 4: Usar el Authentication Helper
Sección titulada “Paso 4: Usa el Authentication Helper”Ahora puedes usar el authentication helper en tu app code.
Implementación
Sección titulada “Implementación”La implementación completa está disponible en la de la app de ejemplo supabaseAuthUtils.ts archivo.
Uso del Authentication Helper
Sección titulada “Uso del Authentication Helper”import { authenticateWithAppleSupabase } from './supabaseAuthUtils';
const result = await authenticateWithAppleSupabase();if (result.success) { console.log('Signed in:', result.user); // Navigate to your authenticated area} else { console.error('Error:', result.error);}Actualizar la función helper
Sección titulada “Actualiza la función helper”Al usar el authenticateWithAppleSupabase función helper, tú usar actualiza los siguientes valores según tu configuración:
-
Actualizar
redirectUrl- Configura esto con la URL de tu Supabase Edge Function:const redirectUrl = platform === 'android'? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback': undefined; -
Actualizar
clientId- Configura esto con tu Apple Service ID:await SocialLogin.initialize({apple: {clientId: isIOS? undefined // iOS uses bundle ID automatically: 'your.service.id.here', // Your Apple Service ID for AndroidredirectUrl: redirectUrl,},});
Consulta la implementación completa como referencia.
Paso 5: Probar la integración
Sección titulada “Paso 5: Probar la integración”-
Build y ejecuta tu app de Android
Ventana de terminal npx cap sync androidnpx cap run android -
Prueba el flujo de autenticación
- Pulsa el botón “Sign in with Apple”
- Deberías ver la página de OAuth de Apple en el navegador
- Tras autenticarte, deberías ser redirigido a tu app
- Revisa los logs de la consola por si hay errores
-
Verifica el flujo
El flujo completo debería ser:
- El usuario pulsa “Sign in with Apple”
- La app abre el navegador con Apple OAuth
- El usuario se autentica con Apple
- Apple redirige a:
https://your-project-ref.supabase.co/functions/v1/apple-signin-callback - La Edge function cambia code por tokens
- La Edge function redirige a:
your-app://path?id_token=...&access_token=... - La app de Android recibe el deep link y procesa el identity token
- La app inicia sesión en Supabase con el identity token
Solución de problemas
Sección titulada “Solución de problemas”Si la autenticación falla:
- Error de Redirect URI mismatch: Verifica que la Return URL en el Apple Developer Portal coincida exactamente con
APPLE_REDIRECT_URIsecret - El deep link no funciona: Comprueba que
AndroidManifest.xmlel intent filter coincida con tuBASE_REDIRECT_URL - Faltan secrets: Verify all secrets are set correctly using
supabase secrets list - Error en el intercambio de token: Revisa los logs de la edge function en el Supabase Dashboard para ver errores detallados
- La app no recibe el callback: Asegúrate de
onNewIntentestá bien implementado en MainActivity - Revisa la app de ejemplo code como referencia
Cómo funciona
Sección titulada “Cómo funciona”En Android, Apple Sign-In usa un flujo de redirección OAuth:
- Inicialización: El plugin se inicializa con tu Service ID y la URL de redirección del backend
- Flujo OAuth: Abre un navegador/Chrome Custom Tab con la página de OAuth de Apple
- Callback del backend: Apple redirige a tu Supabase Edge Function con un code de autorización
- Intercambio de tokens: La edge function intercambia el code por tokens usando el endpoint de tokens de Apple
- Redirección con Deep Link: La edge function redirige de vuelta a tu app con el identity token
- Autenticación de Supabase: La app recibe el token e inicia sesión en Supabase
Este flujo es necesario porque Apple no ofrece soporte nativo para Sign in with Apple en Android.
Continuar desde Supabase Apple Login en Android
Sección titulada “Continúa desde Supabase Apple Login en Android”Si estás usando Supabase Apple Login en Android para planificar los flujos de autenticación y de cuenta, conéctalo con Uso de @capgo/capacitor-social-login para la capacidad nativa en el uso de @capgo/capacitor-social-login, @capgo/capacitor-social-login para los detalles 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 de dos factores para el detalle de implementación en la autenticación de dos factores.