Saltar al contenido

Inicio de sesión de Apple en Android

GitHub

El inicio de sesión de Apple en Android es un poco engañoso. Apple no ofrece soporte oficial para Sign in with Apple La solución es un poco engañosa debido a que Apple no ofrece soporte oficial para

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

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

Entender el flujo en Android.

Entender el flujo en Android

Explícamelo mediante un diagrama para entender el flujo en Android:

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

Crear el ID de servicio

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

  2. Haga 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 Habilitar la capacidad de inicio de sesión con Apple (checkbox)
    3. Si no está habilitado, habilítelo.
  4. Volver a todos All Identifiers

    Botón de navegación de Identificadores de todos
  5. Haga clic en App Ids y vaya a Services IDs

    Sección de IDs de servicios de navegación
  6. Crear un nuevo identificador

    1. Haga 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 selección de IDs de servicio
    3. Introduzca una descripción y un identificador y haga clic Continuie.

      Introduciendo detalles del ID de servicio
    4. Por favor, verifica los detalles y haz clic en Register

      Confirmación de registro del ID de servicio
    5. Haz clic en el servicio creado recientemente

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

      Habilitando la autenticación con Apple para el ID de servicio
    7. Configura el Sign In with Apple

      Configura el botón para Iniciar sesión con Apple
    8. Asegúrate de que el Primary App ID esté configurado en el ID de la aplicación configurado en el paso anterior

      Desplegar ID de aplicación principal
    9. Agrega el dominio en el que vas a alojar tu backend.

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

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

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

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

    Todos los Identificadores
  2. Haz clic en Keys

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

    Agregar nueva clave
  4. Nombra tu clave

    Campo de nombre de la clave
  5. Selecciona Sign in with Apple y haz clic Configure

    Activar y configurar Iniciar sesión con Apple para la clave
  6. Seleccionar la App ID principal, y presionar Save

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

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

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

    Pantalla de ID de la clave y botón de descarga
  10. Encuentra el archivo de la clave descargada y guárdalo en la carpeta del backend.

    Archivo de clave descargada

Para utilizar Login with Apple en Android, debes obtener el Team IDSe utilizará en el backend.

  1. Ir a esta página web y desplázate hacia abajo

  2. Encuentra la Team ID

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

Configuración de la aplicación de redireccionamiento

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

Al observar en el diagrama, el backend realiza un paso llamado Redirect back to the appEste requiere cambios manuales en tu aplicación.

  1. Modificar el AndroidManifest.xml
    1. Abre el archivo, utilizaré AndroidStudio

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

      filtro de intención code 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. Por favor, abra 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 de los servidores de Apple
  • Una verificación JWT simple

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

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

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

    Agregar nuevo identificador botón de más
  2. Seleccionar App IDs y hacer clic en continuar

    Tipo de ID de la aplicación
  3. Hacer clic en tipo App y hacer clic Continue

    Tipo de aplicación
  4. Introducir la descripción y el ID de la aplicación

    Introducir la descripción de la aplicación y el ID de la bundle
  5. Habilitar Sign with Apple capacidad

    Habilitar la capacidad de inicio de sesión con Apple
  6. Hacer clic Continue

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

    Confirmación de los detalles de inscripción de la aplicación

Siga adelante desde la autenticación de Apple en Android

Sección titulada “Siga adelante desde la autenticación de Apple en Android”

Si estás utilizando Autenticación de Apple 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, @capgo/capacitor-social-login para el detalle de implementación en @capgo/capacitor-social-login, @capgo/capacitor-passkey for the implementation detail in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric for the implementation detail in @capgo/capacitor-native-biometric, and Autenticación de dos factores Para obtener más detalles sobre la implementación en Autenticación de dos factores.