Pulsa para ir al contenido principal

Apple Login en Android de Supabase

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 backend

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

Primero, debemos 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. Copie la función de borde code

    La implementación completa de la función de borde se encuentra en la aplicación de ejemplo.

    Copie los siguientes archivos en su 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. - Configurar la verificación de JWT

    - El endpoint de llamada OAuth de Apple debe ser público (no se requiere autenticación) porque Apple lo redirigirá. Actualice su supabase/config.toml - Copiar al portapapeles

    [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. - Ventana de terminal

    file:
    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. Supabase Functions Apple Sign-In Callback

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 Apple Login para Android para:

    • Crear un ID de servicio
    • Genera una clave privada (.p8) archivo
    • Obtenga su ID de Equipo y su ID de Llave
    • Configure la URL de retorno
  2. Establezca la URL de retorno en el Portal del Desarrollador de Apple

    Cuando configure la URL de retorno en el Portal del Desarrollador 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 utilice la URL de redireccionamiento del Guía de configuración de inicio de sesión de Apple para AndroidEsa guía utiliza una URL de servidor de backend personalizado. Para la integración de Supabase, debe deber utilizar en su lugar la URL de función de borde de Supabase.

  3. Recolecte todos los valores requeridos

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

    • ID DE EQUIPO DE APPLE: Su ID de equipo de desarrollador de Apple
    • ID DE CLAVE DE APPLE: La clave ID del portal de desarrolladores de Apple
    • LLAVE PRIVADA DE APPLE: Su archivo de clave privada .p8 (debe estar codificado en base64)
    • ANDROID_SERVICE_ID: Su ID de Servicio de Apple (por ejemplo, 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. Codifique su clave privada

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

    ventana de terminal
    base64 -i AuthKey_XXXXX.p8

    Copiar el contenido 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 bordeConfiguraciónSecretos
    3. Agregar cada variable de secreto con su valor

Ahora puedes utilizar la ayuda de autenticación en tu aplicación code.

La implementación completa está disponible en el archivo del ejemplo de aplicación’s supabaseAuthUtils.ts archivo.

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

Cuando se utiliza la authenticateWithAppleSupabase función auxiliar, usted debe actualizar 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 a 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 para referencia.

  1. Construya y ejecute su aplicación Android

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

    • Presione 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 autenticarte, deberías ser redirigido de regreso a tu aplicación
    • Revisa los registros del 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 la autenticación 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:

  • Error de URI de redirección: Verifique que la URL de retorno en el Portal de Desarrolladores de Apple coincida exactamente con APPLE_REDIRECT_URI secret
  • Enlace profundo no funciona: Verifique que AndroidManifest.xml filtro de intención coincida con su BASE_REDIRECT_URL
  • Secretos faltantes: Verifique que todos los secretos estén configurados correctamente utilizando supabase secrets list
  • Intercambio de tokens falla: Revisa los registros de función de borde en Supabase Dashboard para obtener mensajes de error detallados
  • No recibe la aplicación la devolución de llamada: Asegúrate de que onNewIntent esté implementado correctamente en MainActivity
  • Revisa el ejemplo de aplicación __CAPGO_KEEP_0__ example app code Cómo Funciona

context: Página/área: Capgo Builder / producto de construcción nativa en la nube. Rol: Título de sección o página. Clave de mensaje `native_build_how_it_works_title` (Título de cómo funciona la construcción nativa). | Página/área: Sección de problemas/soluciones de la página principal. Rol: Etiqueta de interfaz de usuario corta o elemento de navegación. Visto en: página premium-support.astro. Clave de mensaje `ps_how_it_works` (Cómo funciona Ps). | Página/área: Página de actualizaciones en vivo. Rol: Título de sección o página. Visto en: página live-update.astro. Clave de mensaje `live_update_how_it_works_title` (Título de cómo funciona la actualización en vivo).

Título de sección: ‘Cómo Funciona’

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

  1. Inicialización: La plugin se inicia con tu ID de Servicio y la URL de redireccionamiento de backend.
  2. Flujo de OAuth: Abre una ventana del navegador/Chrome Custom Tab 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 Token: La función de borde intercambia el code por tokens utilizando el punto final de token de Apple
  5. Redireccionamiento 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 inicia en Supabase

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

Seguir adelante desde Supabase Apple Login en Android

Sección titulada “Seguir adelante 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-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-privada para el detalle de implementación en @capgo/capacitor-clave-privada @capgo/capacitor-biometría-nativa para los detalles de implementación en @capgo/capacitor-native-biometric, y Autenticación en dos factores para los detalles de implementación en Autenticación en dos factores.