Saltar al contenido

Supabase Apple Login en Android

GitHub

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 función de servidor de borde

Sección titulada “Paso 1: Desplegar la función de servidor de borde”

Primero, debemos desplegar la función de borde de Supabase que manejará el llamado de OAuth de Apple.

  1. Dirígete a tu directorio de proyecto de Supabase

    Ventana de terminal
    cd your-project/supabase
  2. Crear la función de borde (no translation needed)

    Ventana de terminal
    supabase functions new apple-signin-callback
  3. Copiar la función de borde code

    La implementación completa de la función de borde está disponible en la app de ejemplo.

    Copiar los siguientes archivos a tu proyecto:

    • supabase/functions/apple-signin-callback/index.ts - Función principal de borde code
    • supabase/functions/apple-signin-callback/deno.json - Mapa de importación para dependencias (incluye jose biblioteca para firmar JWT)
  4. Configure la verificación de JWT

    El punto final de llamada OAuth de Apple debe ser público (no se requiere autenticación) porque Apple lo redirigirá. Actualice su supabase/config.toml archivo:

    [functions.apple-signin-callback]
    enabled = true
    verify_jwt = false # Important: Set to false for public OAuth callback
    import_map = "./functions/apple-signin-callback/deno.json"
    entrypoint = "./functions/apple-signin-callback/index.ts"
  5. Desplegar la función

    ventana de terminal
    supabase functions deploy apple-signin-callback
  6. Obtén la URL de tu función

    Después de la implementación, obtendrás una URL como:

    https://your-project-ref.supabase.co/functions/v1/apple-signin-callback

    Si no la encuentras, puedes hacer lo siguiente:

    1. Abrir https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions
    2. Haz clic en la apple-signin-callback URL de la función para copiarla. Funciones de Supabase Callback de inicio de sesión de Apple

Paso 2: Configura el Portal de Desarrolladores de Apple

Sección titulada “Paso 2: Configura el Portal de Desarrolladores de Apple”

Ahora necesitamos configurar el Portal de Desarrolladores de Apple con la URL de backend y obtener todos los valores necesarios.

  1. Sigue el Guía de Configuración de Apple Login para Android

    Completa el Guía de Configuración de Inicio de Sesión de Apple para Android para:

    • Crear un ID de Servicio
    • Genera una clave privada (archivo .p8)
    • Obtén tu ID de Equipo y ID de Clave
    • Configura la URL de retorno
  2. Set the Return URL in Apple Developer Portal

    Al configurar la URL de retorno en el Portal de Desarrolladores de Apple (paso 6.9 de la guía de Apple), utilice la URL de la función de borde de Supabase:

    https://your-project-ref.supabase.co/functions/v1/apple-signin-callback

    Importante: Utilice la URL de función de Supabase Edge

    No utilice la URL de redireccionamiento del Configuración de inicio de sesión de Apple para Android. Esa guía utiliza una URL de servidor de backend personalizado. Para la integración de Supabase, debe utiliza tu URL de función de Supabase Edge en lugar de eso.

  3. Reúne todos los valores requeridos

    Después de completar la guía de configuración de Apple, deberías tener:

    • APPLE_TEAM_ID: Tu ID de equipo de desarrollador de Apple
    • APPLE_KEY_ID: El ID de clave del portal de desarrolladores de Apple
    • APPLE_PRIVATE_KEY: Tu archivo de clave privada .p8 (necesita estar codificado en base64)
    • ID DEL SERVICIO DE ANDROID: Su ID de Servicio de Apple (por ejemplo, com.example.app.service)
    • URL DE REDIRECCIÓN BASE: Su URL de enlace profundo (por ejemplo, capgo-demo-app://path)

Ahora necesitamos configurar las variables de entorno (secretos) para la función de borde de Supabase.

  1. Codifica tu clave privada

    Primero, codifica tu clave privada de Apple (.p8 archivo) a base64:

    Ventana de terminal
    base64 -i AuthKey_XXXXX.p8

    Copiar el texto completo (es una sola cadena larga).

  2. Establecer secretos utilizando Supabase CLI

    Ventana de terminal
    supabase secrets set APPLE_TEAM_ID=your_team_id
    supabase secrets set APPLE_KEY_ID=your_key_id
    supabase secrets set APPLE_PRIVATE_KEY=your_base64_encoded_key
    supabase secrets set ANDROID_SERVICE_ID=your.service.id
    supabase secrets set BASE_REDIRECT_URL=your-app://path
    supabase secrets set APPLE_REDIRECT_URI=https://your-project-ref.supabase.co/functions/v1/apple-signin-callback
  3. Alternativa: Establecer secretos en la consola de Supabase

    Si prefieres utilizar la consola:

    1. Ir a la consola de tu proyecto de Supabase
    2. Navegar a Funciones de Límite → Configuración → Secretos
    3. Agregar cada variable de secreto con su valor

Ahora puedes utilizar el asistente de autenticación en tu aplicación code.

La implementación completa está disponible en el archivo del supabaseAuthUtils.ts file.

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

Actualiza la Función de Ayuda

Actualizar la Función del Asistente

Cuando se utiliza el authenticateWithAppleSupabase función auxiliar, usted debe actualice los siguientes valores para que coincidan con su configuración:

  1. Actualizar redirectUrl Establezca esto a su URL de función de Supabase Edge:

    const redirectUrl = platform === 'android'
    ? 'https://your-project-ref.supabase.co/functions/v1/apple-signin-callback'
    : undefined;
  2. Actualizar clientId - Establezca esto en su ID de Servicio de Apple:

    await SocialLogin.initialize({
    apple: {
    clientId: isIOS
    ? undefined // iOS uses bundle ID automatically
    : 'your.service.id.here', // Your Apple Service ID for Android
    redirectUrl: redirectUrl,
    },
    });

Ver implementación completa para referencia.

  1. Construye y ejecuta tu aplicación Android

    ventana de terminal
    npx cap sync android
    npx cap run android
  2. Prueba el flujo de autenticación

    • Toca el botón "Iniciar sesión con Apple"
    • Deberías ver la página de autenticación de Apple en un navegador
    • Después de autenticarse, deberías ser redirigido de regreso a tu aplicación
    • Revisa los registros de la consola para cualquier error
  3. Verifica el flujo

    El flujo completo debería ser:

    1. El usuario toca “Iniciar sesión con Apple”
    2. La aplicación abre el navegador con OAuth de Apple
    3. El usuario se autentica con Apple
    4. Apple redirige a: https://your-project-ref.supabase.co/functions/v1/apple-signin-callback
    5. La función de borde intercambia code por tokens
    6. La función de borde redirige a: your-app://path?id_token=...&access_token=...
    7. La aplicación de Android recibe el enlace profundo y procesa el token de identidad
    8. La aplicación se inicia sesión en Supabase con el token de identidad

Si falla la autenticación:

  • URI de redirección no coincideVerifique que la URL de retorno en el Portal del Desarrollador de Apple coincida exactamente con APPLE_REDIRECT_URI secret
  • Enlace profundo no funciona: Verifica eso AndroidManifest.xml : Verifique que el intercambio de tokens falla BASE_REDIRECT_URL
  • __CAPGO_KEEP_0__: Verify all secrets are set correctly using supabase secrets list
  • __CAPGO_KEEP_2__Verifique los registros de función de borde en la consola de Supabase para obtener mensajes de error detallados.
  • La aplicación no recibe la devolución de llamada: Ensure onNewIntent esté implementado correctamente en MainActivity
  • Revisar el ejemplo de aplicación code para referencia

En Android, Apple Sign-In utiliza un flujo de redirección OAuth:

  1. InitializationLa plugin se inicia con tu ID de Servicio y la URL de redirección de backend.
  2. Flujo de OAuth: Abre una pestaña de navegador/Chrome Personalizada con la página de OAuth de Apple
  3. Callback de Backend: Apple redirige a tu función de borde de Supabase con una autorización code
  4. Intercambio de TokenLa función de edge intercambia el code por tokens mediante el punto de conexión de tokens de Apple
  5. Redirección de Enlace Profundo: La función de borde redirige de nuevo a tu aplicación con el token de identidad
  6. Autenticación de Supabase: La aplicación recibe el token y se registra en Supabase

Este flujo es necesario porque Apple no proporciona soporte nativo de Android para Iniciar sesión con Apple.

Sigue adelante desde Supabase Inicio de sesión de Apple en Android

Sección titulada “Continúa desde Supabase Apple Login en Android”

Si estás utilizando Supabase Apple Login en Android 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 Usando @capgo/capacitor-social-login para el detalle de implementación en @capgo/capacitor-social-login Usando @capgo/capacitor-passkey para el detalle de implementación en @capgo/capacitor-passkey Usando @capgo/capacitor-native-biometric para el detalle de implementación en @capgo/capacitor-native-biometric Autenticación en dos factores para el detalle de implementación en Autenticación en dos factores.