Pour intégrer Smart Lock pour les mots de passe à votre application Android, vous devez ajouter des appels à l'API Credentials dans le flux de démarrage et de connexion de votre application. Le schéma suivant illustre le fonctionnement d'une application Android classique utilisant Smart Lock pour les mots de passe.
Bien qu'il existe de nombreuses façons d'intégrer Smart Lock pour les mots de passe et que les détails d'une intégration dépendent de la structure et de l'expérience utilisateur de l'application, le flux suivant est recommandé pour la plupart des applications. Les applications qui utilisent ce flux offrent les avantages suivants en termes d'expérience utilisateur:
- Les utilisateurs existants de votre service ayant un identifiant unique sont immédiatement connectés. Ils accèdent directement à la vue de connexion lorsqu'ils ouvrent l'application.
- Les utilisateurs qui ont enregistré plusieurs identifiants ou qui ont désactivé la connexion automatique ne doivent répondre qu'à une seule boîte de dialogue avant d'accéder à la vue de connexion de l'application.
- Les utilisateurs qui n'ont pas d'identifiants enregistrés ou qui ne se sont pas encore inscrits peuvent sélectionner leur nom et leur adresse e-mail d'un simple geste, puis être redirigés intelligemment vers la vue de connexion ou d'inscription. Ces informations sont préremplies.
- Lorsque les utilisateurs se déconnectent, l'application s'assure qu'ils ne sont pas automatiquement reconnectés.
Récupérer les identifiants
- Lorsque l'application démarre, si aucun utilisateur n'est déjà connecté, appelez
CredentialsClient.request()
. - Si l'opération
Task
réussit, récupérez les identifiants de l'utilisateur avecgetResult().getCredential()
, puis utilisez-les pour vous connecter. - Si
Task
échoue et que l'exception est une instance deResolvableApiException
et quegetStatusCode()
renvoieRESOLUTION_REQUIRED
, l'utilisateur doit obligatoirement saisir des identifiants. AppelezstartResolutionForResult()
pour inviter l'utilisateur à sélectionner un compte enregistré, puis appelezgetParcelableExtra(Credential.EXTRA_KEY)
pour obtenir les identifiants de l'utilisateur et s'en servir pour se connecter.
Enregistrer les identifiants
Si
Task
échoue avec un messageApiException
et quegetStatusCode()
renvoieSIGN_IN_REQUIRED
, l'utilisateur n'a pas d'identifiants enregistrés. Il doit se connecter ou s'inscrire manuellement à l'aide de votre flux de connexion ou d'inscription actuel. Une fois l'utilisateur connecté, vous pouvez lui permettre d'enregistrer ses identifiants pour les récupérer ultérieurement (étape 5).Vous pouvez aider l'utilisateur à se connecter ou à s'inscrire plus rapidement et plus facilement en récupérant des conseils de connexion, tels que l'adresse e-mail de l'utilisateur. L'utilisateur peut sélectionner l'indice et ignorer la saisie de ses identifiants. Si votre application nécessite que les utilisateurs se connectent, vous pouvez choisir de récupérer les indices immédiatement après l'échec de la requête initiale d'identifiants (sinon, vous pouvez attendre que l'utilisateur lance le processus de connexion ou d'inscription).
- Appelez
CredentialsClient.getHintPickerIntent()
et démarrez l'intent pour inviter l'utilisateur à sélectionner un compte, puis appelezgetParcelableExtra(Credential.EXTRA_KEY)
pour obtenir l'indicateur de connexion. - Si l'ID d'utilisateur correspond à un utilisateur existant, préremplissez-le avec le formulaire de connexion et laissez l'utilisateur saisir le mot de passe pour se connecter.
- Si l'ID d'utilisateur de l'indice ne correspond à aucun utilisateur existant, pré-remplissez le formulaire d'inscription avec l'ID et le nom de l'utilisateur, puis laissez l'utilisateur créer un compte.
- Appelez
-
Une fois que l'utilisateur s'est connecté ou a créé un compte, enregistrez l'ID utilisateur et le mot de passe avec
CredentialsClient.save()
.Si l'utilisateur s'est connecté avec un fournisseur d'identité fédéré tel que Google Sign-In, créez l'objet
Credential
avec l'adresse e-mail de l'utilisateur comme ID, puis spécifiez le fournisseur d'identité avecsetAccountType
.
Se déconnecter
- Lorsque l'utilisateur se déconnecte, appelez
CredentialsClient.disableAutoSignIn()
pour l'empêcher de se reconnecter immédiatement. La désactivation de la connexion automatique permet également aux utilisateurs de basculer facilement d'un compte à un autre, par exemple entre des comptes professionnels et personnels, ou entre des comptes sur des appareils partagés, sans avoir à saisir à nouveau leurs informations de connexion.
Prêt à intégrer Smart Lock pour les mots de passe à votre application ? Inscrivez-vous.