Sebbene Gestore delle credenziali supporti l'accesso basato su password, consigliamo vivamente di dare la priorità a metodi di autenticazione moderni e più sicuri come le passkey e Accedi con Google. Questi metodi offrono una sicurezza e un'esperienza utente nettamente migliori. Tuttavia, se la tua applicazione deve supportare le password, utilizza questa guida come riferimento per implementare le password con Gestore delle credenziali.
Gestore delle credenziali fornisce un'API unificata per consentire alla tua app di salvare e recuperare le credenziali utente, inclusi nomi utente e password. Questo semplifica la procedura di accesso per gli utenti e consente loro di utilizzare i fornitori di credenziali senza problemi.
Prerequisiti
L'implementazione delle password di Credential Manager funziona sui dispositivi con Android 4.4 (livello API 19) e versioni successive.
Panoramica
Questa guida si concentra sulle modifiche necessarie nella tua app per creare, salvare e accedere con una password.
- Aggiungi dipendenze alla tua app: aggiungi le librerie di Gestore delle credenziali richieste.
- Crea un'istanza di Gestore delle credenziali: crea un'istanza di Gestore delle credenziali.
- Salvare la password di un utente: memorizza le credenziali utente in modo sicuro.
- Accedi con una password: recupera e utilizza le credenziali memorizzate per l'accesso.
- Identifica i campi che devono utilizzare la compilazione automatica: utilizza la compilazione automatica per una migliore esperienza utente.
- Aggiunta del supporto per Digital Asset Links: aggiunta del supporto per la condivisione delle password tra app e siti web collegati.
Aggiungere dipendenze all'app
Aggiungi le seguenti dipendenze al file build.gradle del modulo dell'app:
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
Trendy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
Crea un'istanza di Gestore delle credenziali
Utilizza il contesto dell'app o dell'attività per creare un oggetto CredentialManager.
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
Salvare la password di un utente
Quando un utente si registra o aggiorna la password all'interno della tua app, salva queste credenziali nel suo gestore delle password.
Crea una richiesta di password: l'oggetto
CreatePasswordRequestcontiene il nome utente e la password da salvare. ChiamacredentialManager.createCredential()per avviare la procedura di salvataggio.Gestisci la risposta: elabora
CreatePasswordResponsee gestisci eventuali errori (ad esempio, se l'utente annulla la richiesta).
suspend fun registerPassword(username: String, password: String) {
// Initialize a CreatePasswordRequest object.
val createPasswordRequest =
CreatePasswordRequest(id = username, password = password)
// Create credential and handle result.
coroutineScope {
try {
val result =
credentialManager.createCredential(
// Use an activity based context to avoid undefined
// system UI launching behavior.
activityContext,
createPasswordRequest
)
// Handle register password result
} catch (e: CreateCredentialException) {
handleFailure(e)
}
}
}
Accedere con una password
Per recuperare le credenziali salvate, crea un GetCredentialRequest con un
GetPasswordOption e chiama getCredential(). Per filtrare le password recuperate in base agli ID utente specificati, utilizza il campo facoltativo
allowedUserIds.
val getPasswordOption = GetPasswordOption()
val credentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(getPasswordOption)
.build()
Identificare i campi che devono utilizzare il riempimento automatico
L'attributo android:isCredential aiuta i fornitori di credenziali a identificare i campi destinati alla compilazione automatica, per un'esperienza utente più fluida. Questo attributo
integra autofillHints esistente.
I vantaggi dell'indicazione di determinati campi da compilare automaticamente includono:
- Maggiore precisione della compilazione automatica: aiuta i gestori delle password e il sistema Android a identificare meglio i campi destinati alle credenziali.
- Esperienza utente migliorata: può portare a suggerimenti di compilazione automatica più fluidi e affidabili.
Includi l'attributo isCredential nei campi del nome utente e della password come mostrato
nell'esempio seguente:
<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" />
In alternativa, aggiungi l'attributo in modo programmatico come mostrato nel seguente snippet:
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
usernameEditText.isCredential = true
passwordEditText.isCredential = true
}
Aggiunta del supporto per Digital Asset Links
Per garantire la compatibilità con i gestori delle password, devi configurare Digital Asset Links tra la tua app e il tuo sito web. In questo modo, le credenziali possono essere condivise in modo sicuro su entrambe le piattaforme.