> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Aprende a añadir la funcionalidad de inicio de sesión nativo a tu aplicación nativa con Apple.

# Añadir Sign In with Apple a aplicaciones nativas de iOS

Puedes añadir la funcionalidad a tu aplicación nativa de iOS para permitir que tus usuarios se autentiquen con Sign In with Apple. Para obtener más detalles sobre la implementación, prueba la [guía de inicio rápido de iOS Swift - Sign In with Apple de Auth0](/es/docs/quickstart/native/ios-swift).

<div id="how-it-works">
  ## Cómo funciona
</div>

En una aplicación nativa, el flujo de inicio de sesión con Sign in with Apple funciona de la siguiente manera:

<Frame>
  <img src="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/I7xtPQoqoAFiHQiT2p7p5/8646a5231491dfbe64bd6a825ccc8ce7/apple-siwa-authn-flow.png?fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=0a45412c8d449962db4d89e4c6f96e98" alt="Diagrama del flujo de autenticación de Sign In with Apple" width="1500" height="923" data-path="docs/images/cdy7uua7fh8z/I7xtPQoqoAFiHQiT2p7p5/8646a5231491dfbe64bd6a825ccc8ce7/apple-siwa-authn-flow.png" />
</Frame>

* **Pasos 1 y 2**: El usuario se autentica mediante el SDK de Apple en su dispositivo iOS y recibe un código de autorización en la respuesta. El usuario no tiene que salir de la aplicación ni usar un navegador para iniciar sesión.

  <Warning>
    Evite usar un nonce. Esto hará que la solicitud a Apple falle en el paso 4 y Auth0 devolverá al usuario un error 400: "Error from Apple connection."
  </Warning>
* **Paso 3**: La aplicación llama al endpoint `/oauth/token` de Auth0 para intercambiar el código de autorización de Apple por tokens de Auth0.
* **Pasos 4 y 5**: La plataforma de Auth0 intercambia el código de autorización con Apple por tokens. Auth0 valida los tokens y usa los claims de estos tokens para construir la identidad del usuario.
* **Paso 6**: Auth0 guarda el perfil del usuario, ejecuta Rules y la autorización, y luego emite <Tooltip tip="Token de acceso: Credencial de autorización, en forma de una cadena opaca o JWT, que se usa para acceder a una API." cta="Ver glosario" href="/es/docs/glossary?term=access+tokens">tokens de acceso</Tooltip> de Auth0 (<Tooltip tip="Token de actualización: Token usado para obtener un Token de acceso renovado sin obligar a los usuarios a volver a iniciar sesión." cta="Ver glosario" href="/es/docs/glossary?term=refresh+tokens">tokens de actualización</Tooltip> e <Tooltip tip="Token de actualización: Token usado para obtener un Token de acceso renovado sin obligar a los usuarios a volver a iniciar sesión." cta="Ver glosario" href="/es/docs/glossary?term=ID+tokens">tokens de ID</Tooltip>) según corresponda. Estos tokens se usan para proteger sus API y a los usuarios administrados por Auth0.

<div id="prerequisites">
  ## Requisitos previos
</div>

Antes de configurar Sign In with Apple para tu aplicación nativa en Auth0, debes:

* Tener una cuenta de [Apple Developer](https://developer.apple.com/programs/), que es una cuenta de pago de Apple. (No hay ninguna prueba gratuita disponible, a menos que formes parte de su [iOS Developer University Program](https://developer.apple.com/support/compare-memberships/).)
* [Registrar tu aplicación en el portal para desarrolladores de Apple](https://marketplace.auth0.com/integrations/apple-social-connection) si aún no lo has hecho. Anota los siguientes ID y la clave para la configuración de la conexión de la aplicación en el <Tooltip tip="Auth0 Dashboard: el producto principal de Auth0 para configurar tus servicios." cta="Ver glosario" href="/es/docs/glossary?term=Auth0+Dashboard">Auth0 Dashboard</Tooltip>:

  * App ID
  * Apple Team ID
  * Client Secret Signing Key
  * Key ID
* Si usas el flujo de Classic Login o incorporas `Lock.js` en tu aplicación, asegúrate de usar `Lock.js` versión 11.16 o posterior.

<div id="configure-and-enable-the-connection-in-auth0">
  ## Configure y habilite la conexión en Auth0
</div>

Una vez que tenga las credenciales necesarias de su cuenta de Apple Developer, debe configurar el cliente de la aplicación y la configuración de la conexión en Auth0.

1. Vaya a [Auth0 Dashboard > Applications > Applications](https://manage.auth0.com/#/applications), elija su aplicación y seleccione el ícono de engranaje para ver la página de configuración.
2. En la parte inferior de la página, seleccione **Show Advanced Settings** y luego la vista **Device Settings**. En **Native Social Login**, active el interruptor **Enable Sign In with Apple**.

   <Frame>
     <img src="https://mintcdn.com/translations/Dcx0M11uuptU53TX/docs/images/cdy7uua7fh8z/2xkQ13r9yCb4GBZdeczZjJ/5bc57b22a0bad292bc9ad28b4884b2b6/Native_App_-_Device_Settings_-_English.png?fit=max&auto=format&n=Dcx0M11uuptU53TX&q=85&s=171d09e910b437e346c3addeb733af85" alt="Configuración del cliente de la aplicación: configuración avanzada del dispositivo" width="1018" height="1169" data-path="docs/images/cdy7uua7fh8z/2xkQ13r9yCb4GBZdeczZjJ/5bc57b22a0bad292bc9ad28b4884b2b6/Native_App_-_Device_Settings_-_English.png" />
   </Frame>
3. En **iOS**, complete el campo **App ID** con el App ID/Bundle Identifier de la aplicación nativa.
4. Vaya a [Auth0 Dashboard > Authentication > Social](https://manage.auth0.com/#/connections/social) y seleccione **Create Connection**.
5. Seleccione la conexión **Apple** y acepte el consentimiento.
6. En la pestaña **Settings**, complete los siguientes campos:

   * **Apple Team ID**
   * **Client Secret Signing Key**
   * **Key ID**

     <Frame>
       <img src="https://mintcdn.com/translations/3nS3prIggmJG9TUI/docs/images/cdy7uua7fh8z/3mTTVYnrwbVYnUx5Mzy0V9/0ab8174a812908c9290663d3d9d05286/dashboard-connections-social-create_enter-details_apple.png?fit=max&auto=format&n=3nS3prIggmJG9TUI&q=85&s=882064d8c3bf80f3ffabf26f8bdab1e2" alt="Configuración de la conexión social de Apple" width="1404" height="1416" data-path="docs/images/cdy7uua7fh8z/3mTTVYnrwbVYnUx5Mzy0V9/0ab8174a812908c9290663d3d9d05286/dashboard-connections-social-create_enter-details_apple.png" />
     </Frame>
7. Seleccione la vista **Applications** para habilitar esta conexión para su aplicación.
8. Haga clic en **Save**.

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Las aplicaciones nativas no se pueden probar desde el navegador. Esto significa que el botón **Try Connection** de la conexión de Apple se usa exclusivamente para probar flujos basados en web.
</Callout>

<div id="logout">
  ## Cerrar sesión
</div>

Dado que la implementación de inicio de sesión nativa de iOS no utiliza flujos estándar basados en navegador, los responsables de la aplicación también deben asegurarse de cerrar sesión correctamente. Cuando una aplicación necesite cerrar sesión, debe realizar las siguientes acciones:

* [Revocar el Token de actualización de Auth0](https://auth0.com/docs/api/authentication#revoke-refresh-token)
* Eliminar el token de actualización de Auth0 almacenado en el llavero de iCloud
* Eliminar el identificador de usuario de Apple almacenado en el llavero de iCloud
  Además, tenga en cuenta que el cierre de sesión puede producirse por acciones del usuario (por ejemplo, al hacer clic en un botón de "cerrar sesión") o porque un usuario revoque el acceso a la aplicación. Esto último se indicará mediante el método nativo [ASAuthorizationAppleIDProvider.getCredentialState](https://developer.apple.com/documentation/authenticationservices/asauthorizationappleidprovider/3175423-getcredentialstate).

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Un matiz del IdP de Apple es que solo devuelve los alcances solicitados (como correo electrónico, nombre y apellido) en el token de ID en la **primera** respuesta. Los enfoques de cierre de sesión más destructivos (como eliminar al usuario) podrían provocar la pérdida de información del perfil, lo que obligaría a los usuarios finales a revocar la autorización y volver a autorizar una aplicación.
</Callout>

<div id="learn-more">
  ## Más información
</div>

* [Política de límites de tasa](/es/docs/troubleshoot/customer-support/operational-policies/rate-limit-policy)
