Skip to main content
Lock autentica a los usuarios enviándoles un correo electrónico o un SMS con una contraseña de un solo uso que deben introducir y confirmar para poder iniciar sesión, de forma similar a como lo hace WhatsApp. En este artículo se explica cómo enviar un CÓDIGO con la biblioteca Lock.Android. Puedes conseguir un resultado similar enviando un enlace en el que el usuario pueda hacer clic para completar automáticamente la autenticación passwordless, pero requiere algunos pasos de configuración adicionales. Para poder autenticar al usuario, tu aplicación debe tener habilitada y configurada la conexión de correo electrónico/SMS en el panel de Auth0.

Implementación del Passwordless por código

Configuración del SDK

En tu archivo app/build.gradle, agrega los marcadores de posición del manifiesto para las propiedades Auth0 Domain y Auth0 Scheme, que la biblioteca utilizará internamente para registrar un intent-filter que capture el resultado de la autenticación.
plugins {
    id "com.android.application"
    id "kotlin-android"
}

android {
    compileSdkVersion 30
    defaultConfig {
        applicationId "com.auth0.samples"
        minSdkVersion 21
        targetSdkVersion 30
        // ...

        // ---> Agrega la siguiente línea
        manifestPlaceholders = [auth0Domain: "@string/com_auth0_domain", auth0Scheme: "https"]
        // <---
    }
}
Es una buena práctica agregar estos valores al archivo strings.xml como recursos de texto a los que luego se puede hacer referencia desde el código.

Uso del SDK

En la actividad en la que vayas a invocar Lock, crea una instancia de Auth0 con la información de tu aplicación. La forma más sencilla de hacerlo es pasar un Android Context. Esto usará los valores definidos previamente en el archivo strings.xml. Para que funcione, los recursos de cadena deben definirse con las mismas claves que las indicadas anteriormente.
val account = Auth0(context)
Declara una implementación de AuthenticationCallback que gestione los eventos de autenticación del usuario. El objeto Credentials que se devuelve en los casos de autenticación satisfactoria contendrá los tokens que tu aplicación o API utilizará. Consulta Tokens para obtener más información.
private val callback = object : AuthenticationCallback() {
    override fun onAuthentication(credentials: Credentials) {
        // Autenticado
    }

    override fun onError(error: AuthenticationException) {
        // Ocurrió una excepción
    }
}
Prepare una nueva instancia de Lock con la clase Builder para configurarla. Proporcione los detalles de la cuenta y la implementación del callback declarada anteriormente. Aquí se pueden configurar valores como , scope y las conexiones disponibles, entre otros. Cuando termine, cree la instancia de Lock. Esta instancia está pensada para reutilizarse y debe liberarse cuando ya no sea necesaria. Un buen lugar para hacerlo es el método onDestroy de su actividad. En el ejemplo siguiente se llama al método useCode() para hacer que Lock envíe un código al correo electrónico o al número de teléfono del usuario.
// Esta actividad mostrará Passwordless Lock
class MyActivity : AppCompatActivity() {

    private lateinit var lock: PasswordlessLock

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val account = Auth0(this)
        // Instanciar Lock una vez
        lock = PasswordlessLock.newBuilder(account, callback)
            .useCode()
            // Personalizar Lock
            .build(this)
    }

    override fun onDestroy() {
        super.onDestroy()
        // ¡Importante! Liberar Lock y sus recursos
        lock.onDestroy(this)
    }

    private val callback = object : AuthenticationCallback() {
        override fun onAuthentication(credentials: Credentials) {
            // Autenticado
        }

        override fun onError(error: AuthenticationException) {
            // Se produjo una excepción
        }
    }
}
Por último, abre el widget PasswordlessLock desde tu actividad.
startActivity(lock.newIntent(this))
Según qué conexiones passwordless estén habilitadas, Lock enviará el código por correo electrónico o SMS. La conexión ‘email’ se selecciona primero si está disponible. Luego, el usuario debe introducir el código en el paso de confirmación. Si el valor coincide con el que espera el servidor, la autenticación se realizará correctamente.