Flusso di integrazione Android

Per integrare Smart Lock per password nella tua app per Android, devi aggiungere chiamate all'API Credenziali al flusso di avvio e accesso della tua 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 servizio che hanno salvato un'unica credenziale hanno eseguito l'accesso immediatamente e passeranno direttamente alla visualizzazione per cui è stato eseguito l'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 dell'app con accesso eseguito.
  • Gli utenti che non hanno credenziali salvate o non si sono ancora registrati possono scegliere il proprio nome e l'indirizzo email con un solo tocco ed essere inviati in modo intelligente alla visualizzazione di accesso o registrazione, con queste informazioni precompilate.
  • Quando gli utenti si disconnettono, l'app assicura che non venga eseguito di nuovo automaticamente l'accesso.

Diagramma del flusso di accesso di Smart Lock

Recupera le credenziali

  1. All'avvio dell'app, se nessun utente ha già eseguito l'accesso, chiama CredentialsClient.request().
  2. Se l'Task va a buon fine, recupera le credenziali dell'utente con getResult().getCredential() e utilizzale per accedere.
  3. 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 getParcelableExtra(Credential.EXTRA_KEY) per ottenere le credenziali dell'utente e utilizzarle per accedere.

Salva credenziali

  1. Se Task restituisce un errore con ApiException e getStatusCode() restituisce SIGN_IN_REQUIRED, l'utente non ha credenziali salvate e deve accedere o registrarsi manualmente utilizzando il tuo flusso di accesso o registrazione attuale. Dopo che l'utente ha completato l'accesso, puoi offrirgli l'opportunità di salvare le sue 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 iniziale delle credenziali non va a buon fine (in caso contrario, puoi attendere fino a quando l'utente non avvia il flusso di accesso o di registrazione).

    1. Chiama CredentialsClient.getHintPickerIntent() e avvia l'intent per richiedere all'utente di selezionare un account, quindi chiama getParcelableExtra(Credential.EXTRA_KEY) per ricevere il suggerimento di accesso.
    2. 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.
    3. 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.
  2. 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

  1. Quando l'utente si disconnette, chiama CredentialsClient.disableAutoSignIn() per evitare che venga subito eseguito di nuovo l'accesso. La disattivazione dell'accesso automatico consente inoltre agli utenti di passare facilmente da un account di lavoro all'altro, ad esempio da un account di lavoro a un account personale o da un account su dispositivi condivisi, senza dover reinserire i dati di accesso.

Vuoi integrare Smart Lock per password nella tua app? Inizia.