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:

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

  1. Navegue a su directorio de proyecto de Supabase

    ventana de terminal
    cd your-project/supabase
  2. Crear la función de borde (si no existe)

    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 aplicación de ejemplo.

    Copiar los siguientes archivos en tu proyecto:

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

    The endpoint de Apple OAuth debe ser público (no se requiere autenticación) porque Apple lo redirigirá a él. 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. Despliegue la función

    ventana de terminal
    supabase functions deploy apple-signin-callback
  6. Obtenga la URL de su función

    Después del despliegue, obtendrá una URL como:

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

    Si no lo encuentras, puedes hacer lo siguiente:

    1. Abrir https://supabase.com/dashboard/project/YOUR_PROJECT_REF/functions
    2. Haz clic en el apple-signin-callback URL de la función para copiarlo. Supabase Functions Apple Sign-In Callback

Paso 2: Configurar el Portal de Desarrolladores de Apple

Sección titulada “Paso 2: Configurar 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. Siga el Guía de configuración de Apple Login para Android

    Complete el Guía de configuración de Apple Login para Android a:

    • Crear un ID de servicio
    • Generar una clave privada (.p8 archivo)
    • Obtenga su ID de equipo y ID de clave
    • Configure la URL de retorno
  2. Establezca la URL de retorno en el Portal de Desarrolladores de Apple

    Cuando configures la URL de retorno en el Portal de Desarrolladores de Apple (paso 6.9 de la guía de Apple), utilice su URL de 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 borde de Supabase

    NO No utilice la URL de redireccionamiento del Guía de 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 utilizar su URL de función de borde de Supabase en su lugar.

  3. Reúne todos los valores requeridos

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

    • __CAPGO_KEEP_0__: Tu ID de equipo de desarrollador de Apple
    • : El ID de clave desde el portal de desarrolladores de Apple: Tu archivo de clave privada .p8 (necesita ser codificado en base64)
    • : Tu ID de servicio de Apple (por ejemplo,ANDROID_SERVICE_ID
    • __CAPGO_KEEP_0____CAPGO_KEEP_0__ com.example.app.service)
    • BASE_REDIRECT_URL: 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. Codificar la clave privada

    Primero, codifique la clave privada de Apple (.p8 archivo) a base64:

    Ventana de terminal
    base64 -i AuthKey_XXXXX.p8

    Copiar el resultado completo (es una cadena larga de un solo lado).

  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. Opcional: Establece secretos en Supabase Dashboard

    Si prefieres usar la consola de administración:

    1. Ir a la consola de administración de tu proyecto de Supabase
    2. Navega a Funciones de bordeConfiguraciónSecretos
    3. Agregar cada variable de secreto con su valor

Ahora puede utilizar la ayuda de autenticación en su aplicación code.

The complete implementation is available in the archivo de la aplicación de ejemplo. supabaseAuthUtils.ts Using the Authentication Helper

Sección titulada “Using the Authentication Helper”

Copy to clipboard
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);
}

Sección titulada “Actualizar la función del asistente”

When using the

helper function, you authenticateWithAppleSupabase must actualizar los siguientes valores para que coincidan con su configuración: __CAPGO_KEEP_0__

  1. Actualizar redirectUrl - Establezca esto en la URL de su función de borde de Supabase:

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

Consulte el implementación completa por 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 OAuth de Apple en un navegador
    • Después de autenticar, deberías ser redirigido de regreso a tu aplicación
    • Revisa los registros del consola para cualquier error
  3. Verificar el flujo

    El flujo completo debería ser:

    1. El usuario presiona “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 Edge intercambia code por tokens
    6. La función de Edge 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 redireccionamiento no coincide: Verifique que la URL de retorno en el Portal de Desarrolladores de Apple coincida exactamente con APPLE_REDIRECT_URI secret
  • La enlace profundo no funciona: Verifique que AndroidManifest.xml el filtro de intención coincida con su BASE_REDIRECT_URL
  • Faltan secretos: Verifique que todos los secretos estén configurados correctamente utilizando supabase secrets list
  • Falló el intercambio de tokens: 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: Asegúrese onNewIntent is properly implemented in MainActivity
  • Revisar el ejemplo de aplicación code para referencia

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

  1. Inicialización: La extensión se inicia con su ID de Servicio y URL de redirección de backend
  2. Flujo de OAuth: Abre una pestaña del navegador/Chrome Personalizada con la página de OAuth de Apple
  3. Llamada de Retorno de Backend: Apple redirige a su función de borde de Supabase con una autorización code
  4. Intercambio de Token: La función de borde intercambia el code por tokens utilizando el punto de extremo de Apple
  5. Redirección de Enlace Profundo: La función de borde redirige de nuevo a su aplicación con el token de identidad
  6. Autenticación de Supabase: La aplicación recibe el token y se registra en Supabase

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

Siga adelante desde Supabase Apple Login en Android

Si está utilizando

Supabase Apple Login on Android Iniciar sesión en Apple en Android con Supabase para planificar la autenticación y los flujos de cuenta, conecte 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-de-pasaje para el detalle de implementación en @capgo/capacitor-clave-de-pasaje, @capgo/capacitor-biometría-nativa para el detalle de implementación en @capgo/capacitor-biometría-nativa, y Autenticación en dos factores para el detalle de implementación en Autenticación en dos factores.