Saltar al contenido

Iniciar sesión con Apple en Android

GitHub

La autenticación de Apple en Android es engorrosa. Apple no ofrece soporte oficial para Sign in with Apple Por lo tanto, la solución es ligeramente engorrosa.

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

  • Difícil configuración
  • 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. Iniciar sesión en el Portal del Desarrollador de Apple.

  2. Haga clic en Identifiers.

    Apple Developer Portal Identifiers section

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

    Apple Developer Portal Identifiers screen
    1. Asegúrese de que este campo diga App IDs
    2. Asegúrese de que pueda encontrar su ID de aplicación.
  3. Asegúrese de que la Sign in with Apple capacidad esté habilitada para su aplicación

    1. Haga clic en su aplicación Seleccionar su aplicación de la lista
    2. Asegúrese de que la Sign in with Apple capacidad esté habilitada Habilitar la capacidad de inicio de sesión con Apple
    3. Si no está habilitada, habilítela.
  4. Vaya a la pestaña de All Identifiers

    Todos los Identificadores
  5. Haga clic en App Ids y vaya a Services IDs

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

    1. Hacer 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. Ingresar una descripción y un identificador y hacer clic Continuie.

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

      Registro de confirmación de ID de servicio
    5. Haga clic en el servicio creado recientemente

      Selección del ID de servicio creado recientemente
    6. Habilitar la Sign in with Apple opción

      Habilitar 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 el Primary App ID Se configura con el ID de la aplicación configurado en el paso anterior.

      Configuración de ID de Aplicación Principal
    9. Agregar el dominio en el que planea alojar su backend.

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

      Configuración de dominio y URL de retorno
    11. Haga clic en Continue

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

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

    Botón de navegación de todos los identificadores
  2. Haz clic en Keys

    Keys section in Apple Developer Portal
  3. Haz clic en el icono de más

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

    Ingresando el nombre del campo de clave
  5. Seleccionar Sign in with Apple y hacer clic Configure

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

    Seleccionando el ID de App principal para la clave
  7. Haz clic en Continue

    Botón de continuar para la configuración clave
  8. Haz clic en Register

    Pulsar para crear la clave
  9. Copia el ID de la clave y descarga la clave.

    Pantalla de botón de ID de clave y descarga
  10. Encuentra la clave descargada y guárdala en la carpeta de backend.

    Archivo de clave descargado

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

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

  2. Encuentra la Team ID

    Ubicación de ID de equipo en cuenta de desarrollador

Como viste en el diagrama, el backend realiza un paso llamado Redirect back to the app Este requiere cambios manuales en tu aplicación.

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

      El archivo AndroidManifest.xml en Android Studio
    2. Encuentra el MainActivity y agrega 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. Modifica el MainActivity
    1. Por favor, abre el MainActivity

      Archivo MainActivity.java en Android Studio
    2. Agregar lo 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);
      }

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 he dicho en este tutorial, aquí está cómo se vería env La sección quedaría así:

  • ANDROID_SERVICE_ID = ID de Servicio
  • IOS_SERVICE_ID ID de la App
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 igual que en IOS. Por favor, consulte esa sección para obtener más información. HOWEVER, pero 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'
}
})
  1. Si no tienes un ID de aplicación, haz clic en el botón de más

    Botón de agregar nuevo identificador de más
  2. Seleccionar App IDs y haz clic en continuar

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

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

    Ingresando descripción de la aplicación y ID de paquete
  5. Habilitar Sign with Apple funcionalidad

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

    Continue button for app registration
  7. Confirmar los detalles y hacer clic Register

    Verificar detalles de registro de la aplicación

Continuar desde inicio de sesión de Apple en Android

Sección titulada “Continuar desde inicio de sesión de Apple en Android”

Si está utilizando Iniciar sesión con Apple en Android para planificar la autenticación y los flujos de cuenta, conecte 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-de-pasaje para el detalle de implementación en @capgo/capacitor-clave-de-pasaje @capgo/capacitor-biometría-nativa para el detalle de implementación en @capgo/capacitor-biometría-nativa, y Autenticación en dos factores para el detalle de implementación en Autenticación en dos factores.