Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Pour intégrer Smart Lock pour les mots de passe à votre application Android, vous devez ajouter des appels à l'API Credentials au flux de démarrage et de connexion de votre application. Le schéma suivant illustre le flux d'une application Android classique qui utilise 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 spécificités 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 cette procédure présentent les avantages suivants en termes d'expérience utilisateur:
Les utilisateurs existants de votre service qui n'ont enregistré qu'un seul identifiant sont immédiatement connectés et accèdent directement à la vue des utilisateurs connectés 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 des utilisateurs connectés de l'application.
Les utilisateurs qui n'ont pas enregistré d'identifiants ou qui ne se sont pas encore inscrits peuvent choisir leur nom et leur adresse e-mail d'un simple geste. Ils sont alors automatiquement redirigés vers la vue de connexion ou d'inscription, avec ces informations préremplies.
Lorsque les utilisateurs se déconnectent, l'application s'assure qu'ils ne sont pas automatiquement reconnectés.
Récupérer des identifiants
Au démarrage de l'application, si aucun utilisateur n'est déjà connecté, appelez CredentialsClient.request().
Si Task réussit, récupérez les identifiants de l'utilisateur avec getResult().getCredential() et utilisez-les pour vous connecter.
Si la méthode Task échoue et que l'exception est une instance de ResolvableApiException et que getStatusCode() renvoie RESOLUTION_REQUIRED, l'entrée utilisateur est requise pour sélectionner un identifiant. Appelez startResolutionForResult() pour inviter l'utilisateur à sélectionner un compte enregistré, puis appelez getParcelableExtra(Credential.EXTRA_KEY) pour obtenir les identifiants de l'utilisateur et les utiliser pour se connecter.
Enregistrer les identifiants
Si Task échoue avec une ApiException et que getStatusCode() renvoie SIGN_IN_REQUIRED, l'utilisateur n'a aucun identifiant enregistré et doit se connecter ou s'inscrire manuellement à l'aide de votre parcours de connexion ou d'inscription actuel. Une fois que l'utilisateur a réussi à se connecter, vous pouvez lui permettre d'enregistrer ses identifiants afin de 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 les indices de connexion, tels que son adresse e-mail. 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 des suggestions immédiatement après l'échec de la demande d'identifiants initiale. 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 appelez getParcelableExtra(Credential.EXTRA_KEY) pour obtenir l'indice de connexion.
Si l'ID utilisateur de l'indice correspond à un utilisateur existant, préremplissez-le dans le formulaire de connexion et laissez l'utilisateur saisir le mot de passe pour se connecter.
Si l'ID utilisateur de l'indice ne correspond à aucun utilisateur existant, remplissez le formulaire d'inscription avec l'ID et le nom de l'utilisateur, puis laissez ce dernier créer un compte.
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 en utilisant l'adresse e-mail de l'utilisateur comme ID et spécifiez le fournisseur d'identité avec setAccountType.
Se déconnecter
Lorsque l'utilisateur se déconnecte, appelez CredentialsClient.disableAutoSignIn() pour l'empêcher d'être immédiatement reconnecté. La désactivation de la connexion automatique permet également aux utilisateurs de passer facilement d'un compte à un autre (par exemple, de leur compte professionnel à leur compte personnel, ou d'un compte à un autre 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.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/25 (UTC).
[null,null,["Dernière mise à jour le 2025/07/25 (UTC)."],[[["\u003cp\u003eSmart Lock for Passwords is deprecated; migrate to Credential Manager for enhanced security and user experience with passkeys, passwords, and federated identities.\u003c/p\u003e\n"],["\u003cp\u003eSmart Lock for Passwords integration involves adding the Credentials API to your app's startup and sign-in flow to retrieve and save user credentials.\u003c/p\u003e\n"],["\u003cp\u003eExisting users with saved credentials can experience automatic sign-in, while new users can benefit from pre-filled forms using sign-in hints.\u003c/p\u003e\n"],["\u003cp\u003eEnsure to disable auto-sign-in upon user sign-out to prevent immediate re-authentication and facilitate account switching.\u003c/p\u003e\n"]]],[],null,["# Android integration flow\n\n| **Deprecated:** Smart Lock for Passwords is deprecated. To ensure the continued security and usability of your app, [migrate to\n| Credential Manager](https://developer.android.com/training/sign-in/passkeys/) today. Credential Manager supports passkey, password, and federated identity authentication (such as Sign-in with Google), stronger security, and a more consistent user experience.\n\nTo integrate Smart Lock for Passwords into your Android app, you must add calls\nto the [Credentials API](/android/reference/com/google/android/gms/auth/api/credentials/package-summary)\nto your app's start-up and sign-in flow. The following diagram shows the flow of\na typical Android app that uses Smart Lock for Passwords.\n\nWhile there are many ways to successfully integrate Smart Lock for Passwords,\nand the specifics of an integration depend on the structure and user experience\nof the app, the following flow is recommended for most apps. Apps that use this\nflow have these user experience advantages:\n\n- Existing users of your service that have a single credential saved are immediately signed in, and they will go directly to the signed-in view when they open the app.\n- Users that have multiple credentials saved or that have disabled automatic sign-in need to respond to only one dialog before they go to the app's signed-in view.\n- Users that have no saved credentials or haven't signed up yet can pick their name and email with a single tap and be intelligently sent to either the sign-in or sign-up view, with this information pre-filled.\n- When users sign out, the app ensures they are not automatically signed back in.\n\n[](/static/identity/smartlock-passwords/android/images/smartlock-passwords-flow.png)\n\n### Retrieve credentials\n\n1. When the app starts, if no user is already signed in, call `CredentialsClient.request()`.\n2. If the `Task` is successful, get the user's credentials with `getResult().getCredential()` and use them to sign in.\n3. If the `Task` fails and the exception is an instance of `ResolvableApiException` and `getStatusCode()` returns `RESOLUTION_REQUIRED`, user input is required to pick a credential. Call `startResolutionForResult()` to prompt the user to select a saved account, then call `getParcelableExtra(Credential.EXTRA_KEY)` to get the user's credentials and use them to sign in. If signing in with the retrieved credentials fails because the password is incorrect or the account doesn't exist, delete the credentials from Smart Lock with `CredentialsClient.delete()`.\n\n### Save credentials\n\n4. If the `Task` fails with an `ApiException` and\n `getStatusCode()` returns `SIGN_IN_REQUIRED`, the\n user has no saved credentials and must sign in or sign up manually using\n your current sign-in or sign-up flow. After the user successfully\n completes sign in, you can provide an opportunity for the user to save\n their credentials for future retrieval (step 5).\n\n You can help the user sign in or sign up faster and more\n easily by retrieving sign-in hints, such as the user's email address. The\n user can select the hint and skip typing their credentials. If your app\n requires users to sign in, you might choose to retrieve hints immediately\n after the initial credentials request fails (otherwise, you can wait until\n the user starts the sign-in or sign-up flow).\n 1. Call `CredentialsClient.getHintPickerIntent()` and start the intent to prompt the user to select an account, then call `getParcelableExtra(Credential.EXTRA_KEY)` to get the sign-in hint.\n 2. If the user ID of the hint matches an existing user, pre-fill the sign-in form with it and let the user enter the password to sign in.\n 3. If the user ID of the hint doesn't match an existing user, pre-fill the sign-up form with the user's ID and name, and let the user create a new account.\n5. After the user successfully signs in or creates an account, save the user\n ID and password with `CredentialsClient.save()`.\n\n If the user signed in with a federated identity provider such as Google\n Sign-In, create the `Credential` object with the user's email\n address as the ID and specify the identity provider with\n `setAccountType`.\n\n### Sign out\n\n6. When the user signs out, call `CredentialsClient.disableAutoSignIn()` to prevent the user from being immediately signed back in. Disabling auto-sign-in also enables users to switch between accounts easily---for example, between work and personal accounts, or between accounts on shared devices---without having to re-enter their sign-in information.\n\nReady to integrate Smart Lock for Passwords into your app?\n[Get started](/identity/smartlock-passwords/android/get-started)."]]