Implementación de Autenticación con Apple en iOS

Clase 26 de 31Curso de Integración Nativa iOS

Resumen

¿Cómo implementar autenticación con Apple en iOS?

La autenticación es una de las partes clave para desarrolladores de aplicaciones móviles, sobre todo si buscas ofrecer alternativas confiables y seguras como "Sign in with Apple". Enfocarse en ofrecer esta opción no solo potencia la seguridad, sino también garantiza una experiencia de usuario más intuitiva. Veamos cómo puedes implementar este tipo de autenticación en tu aplicación iOS.

¿Qué se necesita para empezar con la autenticación de Apple?

Antes de poder implementar la autenticación con Apple, hay ciertos requisitos y pasos necesarios. Aquí hay un resumen de lo que necesitas:

  • Cuenta de desarrollador de Apple: Necesitarás una cuenta de desarrollador de Apple, la cual tiene un costo anual de $99.
  • Configurar tu proyecto: Debes añadir capacidades específicas para permitir "Sign in with Apple" en tu aplicación. Esto se hace en la sección Sign In & Capabilities de tu proyecto.

¿Cómo configurar la capacidad de 'Sign in' en Xcode?

  1. Abre Xcode y selecciona tu proyecto.
  2. En la sección de Sign & Capabilities, haz clic en el botón '+'.
  3. Busca y selecciona "Sign in with Apple".
  4. Este paso es similar a cómo se solicita permisos para la cámara o localización. Al añadir la capacidad, tu aplicación podrá interactuar con los servicios de autenticación de Apple.

¿Cómo escribir el código para autenticación con Apple?

Ahora vamos a centrarnos en el código necesario utilizando Swift para implementar la funcionalidad de 'Sign in with Apple':

Importación de servicios de autenticación

Primero, debes importar la clase necesaria para la autenticación:

import AuthenticationServices

Variables de estado

Define las variables que usarás para manejar la sesión del usuario:

@State private var userIdentifier: String = ""
@State private var userEmail: String?
@State private var showSignInButton: Bool = true

Estas variables controlan el almacenamiento temporal de datos del usuario y el estado de visibilidad del botón de inicio de sesión.

Creación del botón de autenticación

Sign in with Apple ofrece un componente nativo que puedes usar directamente:

SignInWithAppleButton(
    onRequest: { request in
        request.requestedScopes = [.fullName, .email]
    },
    onCompletion: { result in
        switch result {
        case .success(let authorization):
            handleAuthorization(authorization)
        case .failure(let error):
            print("Error de autenticación: \(error.localizedDescription)")
        }
    }
)
.buttonStyle(.signInWithApple)

¿Cómo manejar los resultados de autenticación?

Debes manejar tanto el éxito como el fallo de autenticación.

Manejo de éxito

Cuando la autenticación es exitosa:

func handleAuthorization(_ authorization: ASAuthorization) {
    if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
        self.userIdentifier = appleIDCredential.user
        self.userEmail = appleIDCredential.email
        self.showSignInButton = false
    }
}

Manejo de errores

Al manejar errores, es esencial informar al usuario de manera clara:

func handleError(_ error: Error) {
    print("Error durante la autenticación: \(error.localizedDescription)")
}

¿Cómo verificar el estado de las credenciales?

Cuando se inicia la vista, es importante verificar si hay credenciales existentes:

func checkCredentialsState() {
    let provider = ASAuthorizationAppleIDProvider()
    provider.getCredentialState(forUserID: self.userIdentifier) { (credentialState, error) in
        switch credentialState {
        case .authorized:
            print("Credenciales del usuario están autorizadas.")
        case .revoked, .notFound:
            self.resetState()
        default:
            break
        }
    }
}

¿Qué hacer después?

Una vez configurada y exitosa la implementación, asegúrate de probar tu aplicación en un dispositivo físico para verificar la autenticación en un entorno real. Además, recuerda configurar tu aplicación en el portal de desarrolladores de Apple para asegurarte de que todo esté en orden.

Revisar constantemente tus credenciales es clave para mantener una experiencia de usuario óptima. Así que ajusta tus configuraciones según sea necesario para adaptarse a los cambios futuros de la política y requisitos de Apple. ¡Sigue innovando y haciendo más seguro el camino a través de autenticaciones fluidas y seguras con Apple!