Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Per integrare Smart Lock per password nella tua app Android, devi aggiungere chiamate
all'API Credentials
al flusso di avvio e accesso dell'app. Il seguente diagramma mostra il flusso di una tipica app Android che utilizza Smart Lock per password.
Esistono molti modi per integrare correttamente Smart Lock per password
e le specifiche di un'integrazione dipendono dalla struttura e dall'esperienza utente
dell'app, ma il seguente flusso è consigliato per la maggior parte delle app. Le app che utilizzano questo flusso offrono i seguenti vantaggi in termini di esperienza utente:
Gli utenti esistenti del tuo servizio che hanno una singola credenziale salvata hanno eseguito l'accesso subito e passeranno direttamente alla visualizzazione di accesso quando aprono l'app.
Gli utenti che hanno salvato più credenziali o che hanno disattivato l'accesso automatico devono rispondere a una sola finestra di dialogo prima di passare alla visualizzazione di accesso dell'app.
Gli utenti che non hanno credenziali salvate o non si sono ancora registrati
possono scegliere il proprio nome e indirizzo email con un solo tocco ed essere inviati in modo intelligente
alla visualizzazione di accesso o di registrazione, con queste informazioni precompilate.
Quando gli utenti si disconnettono, l'app garantisce che non venga eseguito di nuovo
automaticamente l'accesso.
Recuperare le credenziali
All'avvio dell'app, se nessun utente ha già eseguito l'accesso, chiama
CredentialsClient.request().
Se il Task ha esito positivo, recupera le credenziali dell'utente con
getResult().getCredential() e utilizzale per accedere.
Se Task ha esito negativo e
l'eccezione è un'istanza di ResolvableApiException e
getStatusCode() restituisce RESOLUTION_REQUIRED,
l'input utente è necessario per scegliere una credenziale. Chiama startResolutionForResult() per richiedere all'utente di selezionare un account salvato, quindi chiama il numero getParcelableExtra(Credential.EXTRA_KEY) per ottenere le credenziali dell'utente e utilizzarle per accedere.
Salva credenziali
Se Task restituisce errori con ApiException e getStatusCode() restituisce SIGN_IN_REQUIRED, l'utente non ha credenziali salvate e deve accedere o registrarsi manualmente utilizzando il flusso di accesso o registrazione attuale. Dopo che l'utente ha completato l'accesso, puoi offrirgli la possibilità di salvare le proprie credenziali per recuperarle in futuro (passaggio 5).
Puoi aiutare l'utente ad accedere o a registrarsi in modo più rapido e semplice recuperando i suggerimenti di accesso, ad esempio l'indirizzo email dell'utente. L'utente può selezionare il suggerimento e saltare la digitazione delle credenziali. Se la tua app richiede agli utenti di accedere, puoi scegliere di recuperare i suggerimenti immediatamente dopo che la richiesta delle credenziali iniziale non va a buon fine. In caso contrario, puoi attendere che l'utente avvii il flusso di accesso o di registrazione.
Chiama CredentialsClient.getHintPickerIntent() e avvia
l'intent a richiedere all'utente di selezionare un account, quindi chiama
getParcelableExtra(Credential.EXTRA_KEY) per ricevere
il suggerimento di accesso.
Se l'ID utente del suggerimento corrisponde a un utente esistente, precompila il
modulo di accesso con il suggerimento e consenti all'utente di inserire la password
per accedere.
Se l'ID utente del suggerimento non corrisponde a un utente esistente, precompila
il modulo di registrazione con l'ID e il nome dell'utente e consenti all'utente
di creare un nuovo account.
Dopo che l'utente ha eseguito l'accesso o creato un account, salva l'ID utente e la password con CredentialsClient.save().
Se l'utente ha eseguito l'accesso con un provider di identità federato come Accedi
con Google, crea l'oggetto Credential con l'indirizzo email
dell'utente come ID e specifica il provider di identità con
setAccountType.
Esci
Quando l'utente esce, chiama il numero CredentialsClient.disableAutoSignIn()
per evitare che venga eseguito nuovamente l'accesso. La disabilitazione dell'accesso automatico consente inoltre agli utenti di passare facilmente da un account all'altro, ad esempio tra account di lavoro e personali o tra account sui dispositivi condivisi, senza dover reinserire i dati di accesso.
Vuoi integrare Smart Lock per password nella tua app?
Inizia.
[null,null,["Ultimo aggiornamento 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)."]]