Skip to main content
Lock authentifie les utilisateurs en leur envoyant un courriel ou un SMS contenant un code à usage unique que l’utilisateur doit saisir et confirmer pour pouvoir se connecter, comme le fait WhatsApp. Cet article explique comment envoyer un code à l’aide de la bibliothèque Lock.Android. Vous pouvez obtenir un résultat semblable en envoyant un lien sur lequel l’utilisateur peut cliquer pour terminer automatiquement l’authentification Passwordless, mais cela nécessite quelques étapes de configuration supplémentaires. Pour pouvoir authentifier l’utilisateur, votre application doit avoir la connexion courriel/SMS activée et configurée dans votre Auth0 Dashboard.

Implémenter Passwordless avec code

Configuration du SDK

Dans votre fichier app/build.gradle, ajoutez les variables de substitution du manifeste pour les propriétés Domaine Auth0 et Schéma Auth0, qui seront utilisées en interne par la bibliothèque pour enregistrer un intent-filter capturant le résultat de l’authentification.
plugins {
    id "com.android.application"
    id "kotlin-android"
}

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

        // ---> Ajouter la ligne suivante
        manifestPlaceholders = [auth0Domain: "@string/com_auth0_domain", auth0Scheme: "https"]
        // <---
    }
}
Il est recommandé d’ajouter ces valeurs au fichier strings.xml sous forme de ressources de chaîne, afin de pouvoir les référencer plus tard dans le code.

Utilisation du SDK

Dans l’activité où vous comptez appeler Lock, créez une instance de Auth0 avec les informations de votre application. La façon la plus simple de la créer consiste à lui passer un contexte Android. Les valeurs définies précédemment dans le fichier strings.xml seront alors utilisées. Pour que cela fonctionne, les ressources de chaîne doivent être définies avec les mêmes clés que celles indiquées ci-dessus.
val account = Auth0(context)
Déclarez une implémentation de AuthenticationCallback qui gérera les événements d’authentification de l’utilisateur. L’objet Credentials renvoyé en cas d’authentification réussie contiendra les jetons que votre application ou votre API utilisera. Consultez Tokens pour en savoir plus.
private val callback = object : AuthenticationCallback() {
    override fun onAuthentication(credentials: Credentials) {
        // Authentifié
    }

    override fun onError(error: AuthenticationException) {
        // Une exception s'est produite
    }
}
Préparez une nouvelle instance de Lock en configurant la classe Builder. Fournissez les renseignements du compte et l’implémentation de rappel déclarée ci-dessus. Des valeurs comme , scope et les connexions disponibles, entre autres, peuvent être configurées ici. Une fois la configuration terminée, créez l’instance de Lock. Cette instance est conçue pour être réutilisée et doit être libérée lorsqu’elle n’est plus nécessaire. Un bon endroit pour le faire est dans la méthode onDestroy de votre activité. L’exemple ci-dessous appelle la méthode useCode() pour que Lock envoie un CODE au courriel ou au numéro de téléphone de l’utilisateur.
// Cette activité affichera Passwordless Lock
class MyActivity : AppCompatActivity() {

    private lateinit var lock: PasswordlessLock

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

        val account = Auth0(this)
        // Instancier Lock une seule fois
        lock = PasswordlessLock.newBuilder(account, callback)
            .useCode()
            // Personnaliser Lock
            .build(this)
    }

    override fun onDestroy() {
        super.onDestroy()
        // Important ! Libérer Lock et ses ressources
        lock.onDestroy(this)
    }

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

        override fun onError(error: AuthenticationException) {
            // Une exception s'est produite
        }
    }
}
Enfin, lancez le widget PasswordlessLock à partir de votre activité.
startActivity(lock.newIntent(this))
Selon les connexions Passwordless activées, Lock enverra le CODE par courriel ou par SMS. La connexion ‘email’ est sélectionnée en premier si elle est disponible. L’utilisateur doit ensuite saisir le CODE à l’étape de confirmation. Si la valeur correspond à celle attendue par le serveur, l’authentification sera réussie.