Saltar al contenido

Iniciar sesión en Apple en Android

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.

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

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

Me gustaría 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.

  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:

    Portal de Desarrolladores de Apple Identificadores pantalla
    1. __CAPGO_KEEP_0__ App IDs
    2. Asegúrate de que este campo diga
  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úrese de que la Sign in with Apple capacidad esté habilitada Casilla de verificación de la capacidad de inicio de sesión con Apple
    3. Si no está habilitada, habilítela.
  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 identificadores de servicios
  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

      Seleccionar la opción de identificadores de servicio
    3. Introducir una descripción y identificadores y hacer clic Continuie.

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

      Confirmar registro de ID de servicio
    5. Haz clic en el servicio creado recientemente

      Seleccionar ID de servicio creado recientemente
    6. Habilitar Sign in with Apple opción

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

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

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

      Configuración de campos de dominio y URL de retorno
    10. Configuración de dominio y URL de retorno confirmada Done

      Haz clic en
    11. Botón de continuación para la configuración del servicio Continue

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

      Creando la clave
  1. Volver a todos All Identifiers

    Botón de navegación de Identificadores protegidos
  2. Haga clic en Keys

    Sección de Claves en Apple Developer Portal
  3. Haga clic en el icono de más

    Botón de agregar nueva clave
  4. Asigne un nombre a su clave

    Campo de entrada de nombre de clave
  5. Seleccionar Sign in with Apple y hacer clic Configure

    Habilitar y configurar la autenticación con Apple para la clave
  6. Seleccionar el ID de aplicación principal, y presionar Save

    Seleccionar el ID de aplicación principal para la clave
  7. Hacer clic en Continue

    Botón Continuar para la configuración de la clave
  8. Hacer clic en Register

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

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

    Archivo de la clave descargada

Para utilizarlo Login with Apple en Android, necesitas 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 de la ID de equipo en la cuenta de desarrollador

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 Redirect back to the appEsto requiere cambios manuales en tu aplicación.

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

      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 MainActivity

      archivo MainActivity.java en Android Studio
    2. Agregue el siguiente code:

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

Configuración del backend

Configuración de backend

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 se vería la env sección:

  • 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 cambian un poco.

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

Crear la aplicación

Nota
  1. Si no tienes ya un ID de aplicación, haz clic en el botón de más

    __CAPGO_KEEP_0__
  2. Seleccionar App IDs y haz clic en continuar

    Tipo de ID de aplicación
  3. Haz clic en tipo App y haz clic Continue

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

    Habilitar
  5. capacidad Sign with Apple habilitar

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

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

    Confirmación de detalles de registro de la aplicación

Siga adelante desde el inicio de sesión de Apple en Android

Sección titulada “Siga adelante desde el inicio de sesión de Apple en Android”

Si está utilizando Inicio de sesión de Apple en Android para planificar la autenticación y los flujos de cuenta, conéctelo con Usando @capgo/capacitor-social-login para la capacidad nativa en Usando @capgo/capacitor-social-login @capgo/capacitor-login-social para los detalles de implementación en @capgo/capacitor-login-social @capgo/capacitor-clave-llave para los detalles de implementación en @capgo/capacitor-clave-llave @capgo/capacitor-biometría-nativa para los detalles de implementación en @capgo/capacitor-biometría-nativa, y autenticación de dos factores para los detalles de implementación en autenticación de dos factores.