Saltar al contenido

Inicio de sesión con Apple en Android

El inicio de sesión con Apple en Android es algo improvisado. Apple no ofrece soporte oficial para Sign in with Apple en Android, así que la solución requiere algunos rodeos.

Actualmente Android usa una pestaña de Chrome para mostrar un sitio OAuth2. Este enfoque implica dos retos principales:

  • Configuración compleja
  • Se necesita un backend

Este diagrama resume el flujo en Android:

Ahora que ya conoces las limitaciones y el flujo general, pasemos a la configuración.

  1. Inicia sesión en el Apple Developer Portal

  2. Haz clic en Identifiers

    Sección Identifiers del Apple Developer Portal

    Deberías ver una pantalla similar a esta:

    Pantalla Identifiers del Apple Developer Portal
    1. Asegúrate de que este campo dice App IDs
    2. Verifica que puedes encontrar el App ID de tu aplicación
  3. Asegúrate de que la capacidad Sign in with Apple está habilitada para tu aplicación

    1. Haz clic en tu app

      Selección de la app en la lista
    2. Verifica que la capacidad Sign in with Apple esté activada

      Casilla de Sign in with Apple habilitada
    3. Si no está activada, actívala

  4. Vuelve a All Identifiers

    Botón de navegación All Identifiers
  5. Haz clic en App IDs y cambia a Services IDs

    Navegación a la sección Services IDs
  6. Crea un identificador nuevo

    1. Haz clic en el botón con el signo +

      Botón para añadir un nuevo Service ID
    2. Selecciona Service IDs y haz clic en Continue

      Selección de la opción Service IDs
    3. Introduce una descripción y un identificador, luego haz clic en Continue

      Formulario con los detalles del Service ID
    4. Verifica los datos y haz clic en Register

      Confirmación del registro del Service ID
    5. Haz clic en el servicio recién creado

      Selección del Service ID recién creado
    6. Activa la opción Sign in with Apple

      Habilitar Sign in with Apple en el Service ID
    7. Configura Sign in with Apple

      Botón Configure para Sign in with Apple
    8. Asegúrate de que Primary App ID apunte al App ID configurado antes

      Selector Primary App ID en la configuración del Service ID
    9. Añade el dominio donde vas a alojar el backend

      Configuración del dominio y de las Return URLs
    10. Confirma los datos y haz clic en Done

      Confirmación de la configuración del dominio y la URL de retorno
    11. Haz clic en Continue

      Botón Continue en la configuración del servicio
    12. Haz clic en Save

      Botón Save en la configuración del servicio
  1. Regrese a todos los “Todos los identificadores”.

    Botón de navegación Todos los identificadores
  2. Haga clic en Keys

    Sección de claves en Apple Portal para desarrolladores
  3. Haga clic en el ícono más

    Añadir nuevo botón clave
  4. Nombra tu clave

    Ingresando el campo de nombre de clave

    Este nombre no es importante, puedes poner cualquier cosa.

  5. Seleccione Sign in with Apple y haga clic en Configure

  6. Seleccione la ID de la aplicación principal y presione Save

    Seleccionar ID de aplicación principal para la clave

    Debe ser el mismo ID de aplicación que el ID de los pasos anteriores.

  7. Haga clic en Continue

  8. Haga clic en Register

    Botón de registro para creación de claves
  9. Copie el ID de la clave y descargue la clave.

    Pantalla de ID de clave y botón de descarga

    :::precaución IMPORTANTE: Guarde este ID, en el backend se llamará KEY_ID. Descarga la clave. Asegúrese de no compartir nunca esta clave. :::

  10. Busque la clave descargada y guárdela en la carpeta backend.

    Archivo de clave descargado

Para utilizar Login with Apple en Android, necesita obtener el “ID del equipo”. Se utilizará en el backend.

  1. Vaya a este sitio web y desplácese hacia abajo.

  2. Busque el “ID del equipo”

    Ubicación del ID del equipo en la cuenta de desarrollador

Configurar la redirección de la aplicación

Section titled “Configurar la redirección de la aplicación”

Como vio en el diagrama, el backend realiza un paso llamado “Redirigir a la aplicación”. Esto requiere cambios manuales en su aplicación.

  1. Modificar el AndroidManifest.xml
    1. Abra el archivo, usaré AndroidStudio

      Archivo AndroidManifest.xml en Android Studio
    2. Busque MainActivity y agregue el siguiente filtro de intención

      Código de filtro de intención para agregar en MainActivity
      <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="capgo-demo-app" android:host="path" />
      </intent-filter>
  2. Modificar el MainActivity
    1. Abra el MainActivity

      Archivo MainActivity.java en Android Studio
    2. Agregue el siguiente código:

      Código para agregar a MainActivity para manejar enlaces profundos
      @Override
      protected void onNewIntent(Intent intent) {
      String action = intent.getAction();
      Uri data = intent.getData();
      if (Intent.ACTION_VIEW.equals(action) && data != null) {
      PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");
      if (pluginHandle == null) {
      Log.i("Apple Login Intent", "SocialLogin login handle is null");
      return;
      }
      Plugin plugin = pluginHandle.getInstance();
      if (!(plugin instanceof SocialLoginPlugin)) {
      Log.i("Apple Login Intent", "SocialLogin plugin instance is not SocialLoginPlugin");
      return;
      }
      ((SocialLoginPlugin) plugin).handleAppleLoginIntent(intent);
      return;
      }
      super.onNewIntent(intent);
      }

      :::precaución Este ejemplo supone que no tienes ningún vínculo profundo configurado. Si es así, ajuste el código. :::

Se requiere un backend para Android, pero la configuración de un backend también afectará a IOS. Se proporciona un ejemplo de backend aquíEste ejemplo proporciona lo siguiente:

  • Una base de datos simple JSON
  • Una forma de solicitar el JWT de los servidores de Apple
  • Una verificación simple JWT

Teniendo en cuenta todo lo que dije en este tutorial, así es como se vería la sección env:

  • ANDROID_SERVICE_ID = ID de servicio
  • IOS_SERVICE_ID = ID de aplicación
env: {
PRIVATE_KEY_FILE: "AuthKey_U93M8LBQK3.p8",
KEY_ID: "U93M8LBQK3",
TEAM_ID: "UVTJ336J2D",
ANDROID_SERVICE_ID: "ee.forgr.io.ionic.starter.service2",
IOS_SERVICE_ID: "me.wcaleniewolny.test.ionic.vue",
PORT: 3000,
REDIRECT_URI: "https://xyz.wcaleniewolny.me/login/callback",
BASE_REDIRECT_URL: "capgo-demo-app://path"
}

El uso de la función login no cambia, es el mismo que en IOS. Por favor, echa un vistazo a esa sección para obtener más información. SIN EMBARGO, el método initialize cambia un poco.

await SocialLogin.initialize({
apple: {
clientId: 'ee.forgr.io.ionic.starter.service2',
redirectUrl: 'https://appleloginvps.wcaleniewolny.me/login/callback'
}
})
  1. Si aún no tiene una ID de aplicación, haga clic en el botón más

    Agregar nuevo identificador botón más
  2. Seleccione “ID de aplicación” y haga clic en continuar.

    Seleccionar el tipo de ID de aplicación
  3. Haga clic en escribir App y haga clic en Continue

    Seleccionar el tipo de aplicación
  4. Ingrese la descripción y el ID de la aplicación.

    Ingresar la descripción de la aplicación y el ID del paquete
  5. Habilite la capacidad Sign with Apple

    Habilitar el inicio de sesión con la capacidad Apple
  6. Haga clic en Continue

    Botón Continuar para el registro de la aplicación.
  7. Confirme los detalles y haga clic en Register

    Confirmar los detalles de registro de la aplicación