Skip to main content
Esta guía de referencia le mostrará cómo implementar la interfaz de usuario de Lock y le dará detalles sobre cómo configurar y personalizar Lock para usarlo como interfaz para sus necesidades de autenticación. Sin embargo, si desea aprender a hacer más con Auth0 y Swift, como guardar, usar y renovar , obtener información del perfil de usuario y mucho más, consulte el SDK Auth0.swift. O bien, eche un vistazo al Quickstart de Swift para ver ejemplos completos y las opciones disponibles, tanto para usar Lock como interfaz como para usar una interfaz personalizada. Consulte el repositorio de Lock.swift en GitHub.

Requisitos

  • iOS 9+
  • Xcode 11.4+ / 12.x
  • Swift 4.x / 5.x

Instalación

Cocoapods

Si utiliza Cocoapods, añada esta línea a su Podfile: pod 'Lock', '~> 2.0' A continuación, ejecute pod install. Para obtener más información sobre Cocoapods, consulte la documentación oficial.

Carthage

Si usas Carthage, agrega la siguiente línea a tu Cartfile: github "auth0/Lock.swift" ~> 2.0 Después, ejecuta carthage bootstrap. Para obtener más información sobre cómo usar Carthage, consulta la documentación oficial.

SPM

Si utiliza Swift Package Manager, abra la siguiente opción del menú en Xcode: File > Swift Packages > Add Package Dependency… En la pantalla Choose Package Repository, agregue esta URL: https://github.com/auth0/Lock.swift.git Luego, haga clic en Next y complete los pasos restantes.
Para obtener más información sobre SPM, consulte la documentación oficial.

Configuración

Integra Lock con tu aplicación

Hay que notificar a Lock cuando se solicite a la aplicación abrir una URL. Puedes hacerlo en el archivo AppDelegate.
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
  return Lock.resumeAuth(url, options: options)
}

Importa Lock

Importa Lock donde lo necesites import lock

Credenciales de Auth0

Para usar Lock, debe proporcionar su Auth0 y su dominio, que puede encontrar en la configuración de su aplicación dentro del Auth0 Dashboard. En el paquete de su aplicación, puede agregar un archivo plist llamado Auth0.plist que incluya sus credenciales con el siguiente formato.

Implementación de Lock Classic

Lock Classic gestiona la autenticación mediante conexiones de base de datos, sociales y empresariales.

Modo OIDC Conformant

Se recomienda encarecidamente usar este SDK en modo OIDC Conformant. Cuando este modo está activado, obliga al SDK a usar el flujo de autenticación actual de Auth0 e impide que acceda a endpoints legados. El valor predeterminado es false
.withOptions {
    $0.oidcConformant = true
}
Para mostrar Lock, agrega el siguiente fragmento a tu UIViewController.
Lock
    .classic()
    // withConnections, withOptions, withStyle, y demás
    .withOptions {
      $0.oidcConformant = true
      $0.scope = "openid profile"
    }
    .onAuth { credentials in
      // Guardemos el valor de credentials.accessToken
    }
    .present(from: self)

Use la biblioteca Auth0.Swift para acceder al perfil de usuario

Para acceder a la información del perfil de usuario, deberá usar la biblioteca Auth0.Swift:
Auth0
   .authentication()
   .userInfo(withAccessToken: accessToken)
   .start { result in
       switch result {
       case .success(let profile):
           print("User Profile: \(profile)")
       case .failure(let error):
           print("Failed with \(error)")
       }
   }
Consulta la documentación de la biblioteca Auth0.Swift para obtener más información sobre cómo usarla.

Especificar conexiones

Lock cargará automáticamente las conexiones configuradas para su aplicación. Si desea anular el comportamiento predeterminado, puede especificar manualmente qué conexiones debe mostrar a los usuarios como opciones de autenticación. Para ello, llame al método y proporcione un closure que permita especificar la(s) conexión(es). Agregar una conexión de base de datos:
.withConnections {
    connections.database(name: "Username-Password-Authentication", requiresUsername: true)
}
Agregar varias conexiones sociales:
.withConnections {
    connections.social(name: "facebook", style: .Facebook)
    connections.social(name: "google-oauth2", style: .Google)
}

Estilo y personalización

Lock ofrece muchas opciones de estilo para ayudarte a aplicar la identidad de tu marca a Lock con withStyle. Por ejemplo, puedes cambiar el color principal y el texto del encabezado de tu widget de Lock:

Personaliza el título, el logotipo y el color principal

.withStyle {
  $0.title = "Company LLC"
  $0.logo = LazyImage(named: "company_logo")
  $0.primaryColor = UIColor(red: 0.6784, green: 0.5412, blue: 0.7333, alpha: 1.0)
}
Puedes consultar el conjunto completo de opciones de estilo para modificar la apariencia de Lock en tu aplicación en la Guía de personalización.

Opciones de configuración

Hay numerosas opciones para configurar el comportamiento de Lock. A continuación, se muestra un ejemplo de Lock configurado para que se pueda cerrar, limitarlo únicamente a usernames (y no a correos electrónicos) y mostrar solo las pantallas de Login y Restablecer contraseña.
Lock
  .classic()
  .withOptions {
    $0.closable = true
    $0.usernameStyle = [.Username]
    $0.allow = [.Login, .ResetPassword]
  }
Puede consultar el conjunto completo de opciones de configuración del comportamiento para modificar la forma en que funciona Lock en su aplicación en la Guía de configuración.

Compatibilidad con gestores de contraseñas

De forma predeterminada, la compatibilidad con gestores de contraseñas mediante 1Password está habilitada para las conexiones de base de datos. La compatibilidad con 1Password sigue requiriendo que el usuario tenga instalada la aplicación 1Password para que la opción sea visible en las pantallas de Login y registro. Puede deshabilitar la compatibilidad con 1Password mediante la propiedad enabled de passwordManager.
.withOptions {
    $0.passwordManager.enabled = false
}
De forma predeterminada, appIdentifier se establecerá con el identificador de paquete de la app y displayName con el nombre para mostrar de la app. Puede personalizarlos de la siguiente manera:
.withOptions {
    $0.passwordManager.appIdentifier = "www.myapp.com"
    $0.passwordManager.displayName = "My App"
}
Deberá añadir lo siguiente al archivo info.plist de su aplicación:
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>org-appextension-feature-password-management</string>
</array>

Más información