Inicie sesión con Apple: ¡impleméntelo en su aplicación!
Publicado: 2020-01-14Iniciar sesión con Apple: una nueva función presentada por Apple en WWDC el año pasado, ahora está disponible en iOS 13. Esta función ofrece un registro de cuenta e inicio de sesión en la aplicación o sitio web simples y seguros. En lugar de completar formularios de registro o iniciar sesión a través de las redes sociales, ahora puede crear una cuenta e iniciar sesión con su ID de Apple y verificar mediante Face ID, Touch ID o contraseña.
Una breve descripción de Iniciar sesión con Apple:
- Configuración de cuenta e inicio de sesión rápidos y fáciles
- Direcciones de correo electrónico verificadas
- Seguridad integrada
- Anti fraude
- Multiplataforma ️
- iOS 13+
En este artículo, me centraré en la implementación básica de Sign In With Apple en dispositivos iOS sin integración con la versión web o integración con el back-end.
¿Cómo funciona la función "Iniciar sesión con Apple"?

Después de tocar “Iniciar sesión con Apple” o “Continuar con Apple” (depende de qué botón se eligió implementar en la aplicación) aparece una ventana de información con las posibilidades de esta solución (segunda captura de pantalla). Luego, después de tocar "Continuar", obtenemos información sobre qué datos se compartirán con el propietario de la aplicación.
Aquí tenemos dos opciones para registrar una cuenta en la aplicación usando Sign In With Apple:
- Al compartir nuestra dirección de correo electrónico , su dirección de correo electrónico real se compartirá con la aplicación o el sitio web.
- Al ocultar nuestra dirección de correo electrónico , su correo electrónico real no se compartirá con la aplicación o el sitio web. Apple generará un correo electrónico único para ti con el dominio @privaterelay.appleid.com. No se preocupe, todos los correos electrónicos del propietario de la aplicación se reenviarán a su bandeja de entrada de todos modos, ya que los correos electrónicos se reenviarán a nuestra dirección de correo electrónico real. El propietario de la aplicación solo conocerá la dirección de correo electrónico generada con el dominio de Apple
Después de seleccionar una de las opciones y tocar “Continuar”, verificamos nuestra ID de Apple como en el caso de desbloquear el teléfono, es decir, mediante Face ID, Touch ID o ingresando el código de acceso. En este punto, se debe crear una cuenta en la aplicación/sitio web con un identificador único para el usuario.

Cuando usó en la aplicación "Iniciar sesión con Apple" anteriormente, puede obtener una vista previa de los detalles de esta forma de iniciar sesión en la configuración y dejar de usar esta función. Para hacer esto, vaya a Configuración> ID de Apple> Contraseña y seguridad> Aplicaciones que usan su ID de Apple> Elegir aplicación.
¿Cómo implementar "Iniciar sesión con Apple"?
Después de leer la parte teórica de “Iniciar sesión con Apple”, podemos proceder a la implementación

En primer lugar, debe abrir "Firma y capacidades" en su proyecto, luego presione + y agregue la capacidad "Iniciar sesión con Apple".

Apple en el discurso de apertura de la WWDC divide el proceso de implementación de esta función en cuatro etapas. Todas las etapas se describen a continuación.
1. Botón
Al principio, tenemos que añadir un botón a nuestra pantalla. Debe ser el botón ASAuthorizationAppleIDButton
del marco AuthenticationService
. Está disponible en dos colores (blanco y negro) con diferentes títulos. Al botón, debemos agregar una acción que se invocará después de tocarlo. Describo la acción de autorización en el segundo punto.
importar servicios de autenticación let button = ASAuthorizationAppleIDButton(tipo: .signIn, estilo: .white) button.addTarget(self, action: #selector(appleIdButtonClicked), for: .touchUpInside) stackView.addArrangedSubview(botón)
2. Autorización ️
Aquí creamos una solicitud de autorización, en la que como requestedScopes
proporcionamos solo la información que es necesaria para crear una cuenta en nuestra aplicación o sitio web. En mi caso, este es el nombre completo y la dirección de correo electrónico. Luego configure el delegado y haga la solicitud.
@objc func appleIdButtonClicked() { let request = ASAuthorizationAppleIDProvider().createRequest() request.requestedScopes = [.nombre completo, .correo electrónico] dejar controlador = ASAuthorizationController (solicitudes de autorización: [solicitud]) controlador.delegado = self controlador.presentationContextProvider = self controlador.performRequests() }
3. Verificación
Después de una verificación rápida con Face ID, Touch ID o contraseña, se devolverá el resultado de la autorización. Cuando la autorización es exitosa, el método didCompleteWithAuthorization
devolverá un objeto de tipo AppleIdCredential
. Luego, debe verificar si son credenciales del tipo ASAuthorizationAppleIdCredential
; en caso afirmativo, en este objeto encontraremos todos los datos necesarios para configurar una cuenta en nuestro sistema, como la identificación de usuario única, nombre completo y dirección de correo electrónico (que el usuario había pedido antes). En este punto, podemos proceder a crear una cuenta en nuestro sistema proporcionando solo la información necesaria. Si ocurre un error, se devolverá en el método didCompleteWithError
, donde podemos manejar este error.

func autorizaciónController(controlador: ASAuthorizationController, didCompleteWithAuthorization autorización: ASAuthorization) { si dejar appleIDCredential = autorización.credencial como? ASAuthorizationAppleIDCredential { // Crea una cuenta en tu sistema. } else if let contraseñaCredential = autorización.credencial como? ASPasswordCredential { // Inicie sesión con una credencial de llavero de iCloud existente. } } func AuthorizationController(controlador: ASAuthorizationController, didCompleteWithError error: Error) { imprimir (error) }
4. Manejo de cambios
Debe estar preparado para el hecho de que el usuario, por ejemplo, haya dejado de usar la aplicación para iniciar sesión con una ID de Apple. Esto debe manejarse correctamente después de que el usuario reinicie la aplicación.
Usando la ID de usuario que recibimos durante el registro de la cuenta, podemos obtener el estado actual de la credencial de ID de Apple al invocar el método getCredentialState
muy rápidamente. Este método puede devolver tres estados:
-
authorized
: un usuario autorizado que puede continuar usando la aplicación. -
revoked
: cierre la sesión del usuario y, opcionalmente, puede llevarlo a la pantalla de inicio de sesión para iniciar sesión nuevamente. -
notFound
: significa que el usuario no ha utilizado previamente "Iniciar sesión con Apple". En este punto, muestre también al usuario la pantalla de inicio de sesión.
La invocación del método getCredentialState
debe estar en AppDelegate
en el método didFinishLaunchingWithOptions
.
Además, Apple proporciona Notificación, en la que informa cuando se han revocado las credenciales y luego debemos manejarlo de la manera mencionada anteriormente para este estado.
appleIDProvider.getCredentialState(forUserID: userId) { credentialState, error en Cambiar estado de credencial { caso .autorizado: // La credencial de ID de Apple es válida. caso .revocado: // La credencial de ID de Apple está revocada, cierre la sesión. caso .notFound: // No se encontró ninguna credencial, así que muestre la interfaz de usuario de inicio de sesión. defecto: descanso } } // Registro para notificación de revocación NotificationCenter.default.addObserver(forName: NSNotification.Name.ASAuthorizationAppleIDProviderCredentialRevoked, objeto: nulo, cola: nil) { _ en // Cerrar la sesión del usuario, opcionalmente guiarlo para que vuelva a iniciar sesión }
Después de implementar las cuatro etapas en mi aplicación de muestra, todo funciona y se ve así:

¿Tengo que agregar "Iniciar sesión con Apple" a mi aplicación?
Si su aplicación utiliza un método de inicio de sesión de terceros, como Facebook, Google o LinkedIn, también debe agregar Iniciar sesión con Apple de acuerdo con las nuevas pautas. Si no lo agrega, es posible que Apple rechace su solicitud y que Apple no la revise. A continuación se muestra un enlace a las noticias y una cita de las directrices.
Nuevas pautas para iniciar sesión con Apple: 12 de septiembre de 2019 ️
A partir de hoy, las nuevas aplicaciones enviadas a la App Store deben seguir estas pautas. Las aplicaciones existentes y las actualizaciones de aplicaciones deben seguirlas antes de abril de 2020.
A continuación se encuentran las aplicaciones que ofrecen iniciar sesión con la nueva función de Apple, por supuesto, cada día hay más y más.

Puedes consultar todo el proyecto en mi GitHub aquí.
Fuentes:
- https://developer.apple.com/videos/play/wwdc2019/706/
- https://developer.apple.com/videos/play/wwdc2019/516
- https://developer.apple.com/iniciar-sesión-con-apple/comenzar/
- https://developer.apple.com/noticias/?id=09122019b
- https://developer.apple.com/app-store/review/guidelines/#regístrate-con-apple