Bien que le Gestionnaire d'identifiants soit compatible avec la connexion par mot de passe, nous vous recommandons vivement de privilégier les méthodes d'authentification modernes et plus sécurisées, telles que les clés d'accès et Se connecter avec Google. Ces méthodes offrent une sécurité et une expérience utilisateur nettement meilleures. Toutefois, si votre application doit être compatible avec les mots de passe, utilisez ce guide comme référence pour les implémenter avec le Gestionnaire d'identifiants.
Le Gestionnaire d'identifiants fournit une API unifiée permettant à votre application d'enregistrer et de récupérer les identifiants des utilisateurs, y compris les noms d'utilisateur et les mots de passe. Cela simplifie le processus de connexion pour les utilisateurs et leur permet d'utiliser les fournisseurs d'identifiants de manière transparente.
Prérequis
L'implémentation des mots de passe du Gestionnaire d'identifiants fonctionne sur les appareils exécutant Android 4.4 (niveau d'API 19) et versions ultérieures.
Présentation
Ce guide se concentre sur les modifications requises dans votre application pour créer, enregistrer et vous connecter avec un mot de passe.
- Ajouter des dépendances à votre application : ajoutez les bibliothèques requises du Gestionnaire d'identifiants.
- Instancier le Gestionnaire d'identifiants : créez une instance du Gestionnaire d'identifiants.
- Enregistrer le mot de passe d'un utilisateur : stockez les identifiants de l'utilisateur de manière sécurisée.
- Se connecter avec un mot de passe : récupérez et utilisez les identifiants stockés pour vous connecter.
- Identifier les champs qui doivent utiliser le remplissage automatique : utilisez le remplissage automatique pour une meilleure expérience utilisateur.
- Ajouter la prise en charge de Digital Asset Links : ajoutez la prise en charge pour partager des mots de passe entre des applications et des sites Web associés.
Ajouter des dépendances à votre application
Ajoutez les dépendances suivantes au fichier build.gradle du module de votre application :
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
Instancier le Gestionnaire d'identifiants
Utilisez le contexte de votre application ou de votre activité pour créer un objet CredentialManager.
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
Enregistrer le mot de passe d'un utilisateur
Lorsqu'un utilisateur s'inscrit ou met à jour son mot de passe dans votre application, enregistrez ces identifiants dans son gestionnaire de mots de passe.
Construire une requête de mot de passe : l'
CreatePasswordRequestobjet contient le nom d'utilisateur et le mot de passe à enregistrer. AppelezcredentialManager.createCredential()pour lancer le processus d'enregistrement.Gérer la réponse : traitez la
CreatePasswordResponseet gérez les erreurs (par exemple, si l'utilisateur annule la requête).
suspend fun registerPassword(username: String, password: String) {
// Initialize a CreatePasswordRequest object.
val createPasswordRequest =
CreatePasswordRequest(id = username, password = password)
// Create credential and handle result.
// Use an activity-based context to avoid undefined system UI
// launching behavior.
val context = MutableContextWrapper(activityContext)
coroutineScope {
try {
val result =
credentialManager.createCredential(
// Use MutableContextWrapper to avoid memory leak during configuration changes
context = context,
createPasswordRequest
)
// Handle register password result
} catch (e: CreateCredentialException) {
handleFailure(e)
}
}
}
Se connecter avec un mot de passe
Pour récupérer les identifiants enregistrés, créez une GetCredentialRequest avec une
GetPasswordOption et appelez getCredential(). Pour filtrer les
mots de passe récupérés en fonction des ID utilisateur spécifiés, utilisez le champ facultatif
allowedUserIds.
val getPasswordOption = GetPasswordOption()
val credentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(getPasswordOption)
.build()
Identifier les champs qui doivent utiliser le remplissage automatique
L'attribut android:isCredential aide les fournisseurs d'identifiants à identifier les champs destinés au remplissage automatique, ce qui améliore l'expérience utilisateur. Cet attribut complète les autofillHints existants.
Voici les avantages à indiquer que certains champs sont destinés au remplissage automatique :
- Précision améliorée du remplissage automatique : aide les gestionnaires de mots de passe et le système Android à mieux identifier les champs destinés aux identifiants.
- Expérience utilisateur améliorée : peut générer des suggestions de remplissage automatique plus fluides et plus fiables.
Incluez l'attribut isCredential dans les champs de nom d'utilisateur et de mot de passe, comme illustré dans l'exemple suivant :
<EditText
android:id="@+id/username_edittext"
android:autofillHints="username"
android:isCredential="true" />
<EditText
android:id="@+id/password_edittext"
android:inputType="textPassword"
android:autofillHints="password"
android:isCredential="true" />
Vous pouvez également ajouter l'attribut par programmation, comme illustré dans l'extrait de code suivant :
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
usernameEditText.isCredential = true
passwordEditText.isCredential = true
}
Ajouter la prise en charge de Digital Asset Links
Pour assurer la compatibilité avec les gestionnaires de mots de passe, vous devez configurer Digital Asset Links entre votre application et votre site Web. Cela permet de partager les identifiants de manière sécurisée sur les deux plates-formes.