Skip to main content

Descripción general

SDK de Swift para iOS, macOS, tvOS y watchOS que te permite integrar Auth0 en tus aplicaciones sin esfuerzo. Agrega inicio de sesión y cierre de sesión, almacena credenciales de forma segura y accede a la información del usuario.Consulta el repositorio de GitHub¿Vas a migrar desde la v1? Consulta la Guía de migración

Documentación

Primeros pasos

Requisitos

  • iOS 13.0+ / macOS 11.0+ / tvOS 13.0+ / watchOS 7.0+
  • Xcode 14.x
  • Swift 5.7+
Consulta la política de soporte para saber cuándo dejar de admitir versiones de Xcode, Swift y de la plataforma no se considerará un cambio no retrocompatible.

Instalación

Swift Package Manager

Abra la siguiente opción del menú en Xcode: File > Add Packages… En el cuadro de búsqueda Search or Enter Package URL introduzca esta URL:
https://github.com/auth0/Auth0.swift
Luego, selecciona la dependencia y pulsa Add Package.

Cocoapods

Añade la siguiente línea a tu Podfile:
pod 'Auth0', '~> 2.0'
Luego, ejecuta pod install.

Carthage

Agrega la siguiente línea a tu archivo Cartfile:
github "auth0/Auth0.swift" ~> 2.0
Luego, ejecuta carthage bootstrap --use-xcframeworks.

Configura el SDK

Ve al Auth0 Dashboard y crea una nueva aplicación Native. Auth0.swift necesita el  y el dominio de la aplicación de Auth0 para comunicarse con Auth0. Puedes encontrar estos datos en la página Settings de tu aplicación de Auth0. Si utilizas un dominio personalizado, usa el valor de tu en lugar del valor de la página Settings.

Configure el ID de cliente y el dominio con un archivo plist

Cree un archivo plist llamado Auth0.plist en el paquete de su aplicación con el siguiente contenido:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>ClientId</key>
    <string>{yourAuth0ClientId}</string>
    <key>Domain</key>
    <string>{yourAuth0Domain}</string>
</dict>
</plist>

Configura el ID de cliente y el dominio mediante programación

Para Web Auth
Auth0
    .webAuth(clientId: "{yourAuth0ClientID}", domain: "{yourAuth0Domain}")
    // ...
Para el cliente de la API de autenticación
Auth0
    .authentication(clientId: "{yourAuth0ClientID}", domain: "{yourAuth0Domain}")
    // ...
Para el cliente de Management API (Usuarios)
Auth0
    .users(token: credentials.accessToken, domain: "{yourAuth0Domain}")
    // ...

Configurar Web Auth (iOS / macOS)

Configurar la URL de callback y la URL de cierre de sesión

La URL de callback y la URL de cierre de sesión son las URL que Auth0 usa para redirigir de vuelta a su aplicación. Auth0 usa la URL de callback después de autenticar al usuario y la URL de cierre de sesión después de eliminar la . Como la URL de callback y la URL de cierre de sesión pueden manipularse, deberá agregar sus URL a los campos Allowed Callback URLs y Allowed Logout URLs en la página Settings de su aplicación de Auth0. Esto permitirá que Auth0 reconozca esas URL como válidas. Si la URL de callback y la URL de cierre de sesión no están configuradas, los usuarios no podrán iniciar ni cerrar sesión en la aplicación y recibirán un error. Vaya a la página Settings de su aplicación de Auth0 y agregue la URL correspondiente a Allowed Callback URLs y Allowed Logout URLs, según la plataforma de su aplicación. Si usa un dominio personalizado, reemplace {yourAuth0Domain} por el valor de su dominio personalizado en lugar del valor de la página Settings.
iOS
{yourBundleIdentifier}://{yourAuth0Domain}/ios/{yourBundleIdentifier}/callback
macOS
{yourBundleIdentifier}://{yourAuth0Domain}/macos/{yourBundleIdentifier}/callback
Por ejemplo, si el identificador del paquete de iOS fuera com.example.MyApp y tu dominio de Auth0 fuera example.us.auth0.com, este valor sería:
com.example.MyApp://example.us.auth0.com/ios/com.example.MyApp/callback
Asegúrate de que la configuración Token Endpoint Authentication Method esté establecida en None.

Configura un esquema de URL personalizado

En Xcode, ve a la pestaña Info de la configuración del target de tu aplicación. En la sección URL Types, haz clic en el botón para añadir una nueva entrada. Allí, introduce auth0 en el campo Identifier y $(PRODUCT_BUNDLE_IDENTIFIER) en el campo URL Schemes. Esto registra tu identificador de paquete como un esquema de URL personalizado, para que la URL de callback y la URL de cierre de sesión puedan abrir tu aplicación.

Inicio de sesión con Web Auth (iOS / macOS)

Importa el módulo Auth0 en el archivo en el que quieras mostrar la página de inicio de sesión.
import Auth0
Luego, muestra la página de Universal Login en la acción asociada a tu botón de Iniciar sesión.
Auth0
    .webAuth()
    .start { result in
        switch result {
        case .success(let credentials):
            print("Obtained credentials: \(credentials)")
        case .failure(let error):
            print("Failed with: \(error)")
        }
    }

Uso de async/await

do {
    let credentials = try await Auth0.webAuth().start()
    print("Obtained credentials: \(credentials)")
} catch {
    print("Failed with: \(error)")
}

Uso de Combine

Auth0
    .webAuth()
    .start()
    .sink(receiveCompletion: { completion in
        if case .failure(let error) = completion {
            print("Failed with: \(error)")
        }
    }, receiveValue: { credentials in
        print("Obtained credentials: \(credentials)")
    })
    .store(in: &cancellables)

Cierre de sesión con Web Auth (iOS / macOS)

Cerrar la sesión del usuario implica borrar la cookie de sesión de y luego eliminar las credenciales del usuario de su aplicación. Llame al método clearSession() en la acción de su botón Cerrar sesión. Una vez borrada la cookie de sesión, elimine las credenciales del usuario.
Auth0
    .webAuth()
    .clearSession { result in
        switch result {
        case .success:
            print("Session cookie cleared")
            // Eliminar credenciales
        case .failure(let error):
            print("Failed with: \(error)")
        }
    }

Uso de async/await

do {
    try await Auth0.webAuth().clearSession()
    print("Session cookie cleared")
    // Eliminar credenciales
} catch {
    print("Failed with: \(error)")
}

Uso de Combine

Auth0
    .webAuth()
    .clearSession()
    .sink(receiveCompletion: { completion in
        switch completion {
        case .finished:
            print("Session cookie cleared")
            // Eliminar credenciales
        case .failure(let error):
            print("Failed with: \(error)")
        }
    }, receiveValue: {})
    .store(in: &cancellables)

Cuadro de alerta de SSO (iOS / macOS)

undefined
Consulta las FAQ para obtener más información sobre el cuadro de alerta que aparece de forma predeterminada al usar Web Auth.
Consulta también How to Create a Seamless Mobile SSO (Single Sign-On) Experience in iOS para obtener una explicación detallada.

Próximos pasos

Consulta la mayoría de las funcionalidades en Ejemplos: