Saltar al contenido

Autenticación de Apple en Android

GitHub

El inicio de sesión de Apple en Android es engañoso. Apple no ofrece soporte oficial para Sign in with Apple en Android, por lo que la solución es ligeramente engañosa.

Actualmente, Android utiliza una pestaña de Chrome para mostrar un sitio web OAuth2. Este enfoque tiene los siguientes desafíos:

  • Configuración difícil
  • Se requiere un backend

Déjame usar un diagrama para explicar el flujo en Android:

Ahora que estás al tanto de los desafíos y el flujo, comencemos la configuración.

Creando el ID de servicio

Crear el ID de servicio
  1. Iniciar sesión en el Portal de desarrolladores de Apple.

  2. Hacer clic en Identifiers.

    Sección de identificadores del portal de desarrolladores de Apple

    Deberías ver una pantalla que se parece a esta:

    Pantalla de identificadores del portal de desarrolladores de Apple
    1. Asegúrate de que este campo diga App IDs
    2. Asegúrate de que puedas encontrar tu ID de App.
  3. Asegúrate de que la Sign in with Apple capacidad esté habilitada para tu aplicación

    1. Haz clic en tu aplicación Seleccionar tu aplicación de la lista
    2. Asegúrate de que la Sign in with Apple capacidad esté habilitada Casilla de verificación de la capacidad de inicio de sesión con Apple habilitada
    3. Si no está habilitada, habilita
  4. Vuelve a la lista de todas All Identifiers

    Todos los Identificadores botón de navegación
  5. Haz clic en App Ids y ve a Services IDs

    Navegación a la sección de IDs de servicios
  6. Crear un nuevo identificador

    1. Haz clic en el botón de más

      Botón de agregar nuevo ID de servicio
    2. Seleccionar Servcice IDs y hacer clic Continue

      Opción de seleccionar IDs de servicios
    3. Introducir una descripción y un identificador y hacer clic Continuie.

      Introducir detalles del ID de servicio
    4. Por favor, verifique los detalles y haga clic Register

      Confirmación de registro de ID de servicio
    5. Haga clic en el servicio de ID recién creado

      Seleccionar ID de servicio recién creado
    6. Habilitar la Sign in with Apple opción

      Habilitando inicio de sesión con Apple para ID de servicio
    7. Configurar el Sign In with Apple

      Botón de configuración para inicio de sesión con Apple
    8. Asegúrese de que Primary App ID se establece en la ID de la aplicación configurada en el paso anterior

      Configuración de la ID principal de la aplicación
    9. Agregar el dominio en el que vas a hospedar tu backend.

      Configuración de los campos de dominio y URL de retorno
    10. Confirmar los datos y hacer clic Done

      Confirmación de dominio y configuración de URL de retorno
    11. Hacer clic en Continue

      Botón de continuación para la configuración del servicio
    12. Hacer clic en Save

      Botón de guardar para la configuración del servicio
  1. Volver a todos All Identifiers

    Navegación de identificadores de todos
  2. Hacer clic en Keys

    Sección de claves en el Portal de Desarrolladores de Apple
  3. Haz clic en el icono de más

    Botón de agregar nueva clave
  4. Nombra tu clave

    Campo de ingreso del nombre de la clave
  5. Seleccionar Sign in with Apple y hacer clic Configure

    Habilitar y configurar Sign in with Apple para la clave
  6. Selecciona el ID de App principal, y presiona Save

    Seleccionar el ID de App principal para la clave
  7. Haga clic en Continue

    Botón de continuación para la configuración de la clave
  8. Haga clic en Register

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

    Pantalla del ID de la clave y botón de descarga
  10. Encuentre el archivo de la clave descargada y guarde en el carpeta del backend.

    Archivo de la clave descargada

Para utilizar Login with Apple en Android, necesita obtener el Team ID. Se utilizará en el backend.

  1. Vaya a esta página web y desplácese hacia abajo

  2. Encuentra la ubicación del ID de equipo en la cuenta de desarrollador Team ID

    Configuración de la redirección de la aplicación

Sección titulada “Configuración de la redirección de la aplicación”

Como viste en el diagrama, el backend realiza un paso llamado

Este requiere cambios manuales en tu aplicación. Redirect back to the appModificar el

  1. Abre el archivo, utilizaré AndroidManifest.xml
    1. Archivo AndroidManifest.xml en Android Studio AndroidStudio

      Encuentra el
    2. y agrega el siguiente filtro de intención MainActivity Filtro de intención __CAPGO_KEEP_0__ para agregar en MainActivity

      Intent filter code to add in 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. Por favor, abre el archivo MainActivity.java en Android Studio MainActivity

      Agregar el siguiente __CAPGO_KEEP_0__:
    2. code para agregar a MainActivity para manejar enlaces profundos

      Code to add to MainActivity for handling deep links
      @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);
      }

Se requiere un backend para Android, pero configurar un backend también afectará a IOS. Se proporciona un ejemplo de backend aquí

Este ejemplo proporciona lo siguiente:

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

Dado todo lo que dije en este tutorial, aquí está cómo se vería env esta sección:

  • ANDROID_SERVICE_ID = Identificador de Servicio
  • IOS_SERVICE_ID = Identificador 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 login La función no cambia, es lo mismo que IOS. Por favor, consulte esa sección para obtener más información. Sin embargo, el initialize El método cambia un poco.

await SocialLogin.initialize({
apple: {
clientId: 'ee.forgr.io.ionic.starter.service2',
redirectUrl: 'https://appleloginvps.wcaleniewolny.me/login/callback'
}
})

Sección titulada “Crear la aplicación”

Nota
  1. Agregar nuevo identificador de más

    Seleccionar
  2. y hacer clic en continuar App IDs Seleccionando el tipo de ID de App

    __CAPGO_KEEP_0__
  3. Haz clic en tipo App y haz clic Continue

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

    Introduciendo la descripción de la aplicación y el ID de la aplicación
  5. Habilitar Sign with Apple habilidad

    Habilitando la capacidad de inicio de sesión con Apple
  6. Haz clic Continue

    Botón de continuación para la registro de la aplicación
  7. Confirmar los detalles y haz clic Register

    Confirmar los detalles de registro de la aplicación

Si estás utilizando 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 el detalle de implementación en @capgo/capacitor-biometría nativa, y Autenticación de dos factores para el detalle de implementación en Autenticación de dos factores.