Embora o Credential Manager ofereça suporte ao login com senha, recomendamos priorizar métodos de autenticação modernos e mais seguros, como chaves de acesso e Fazer login com o Google. Esses métodos oferecem uma segurança e uma experiência do usuário muito melhores. No entanto, se o aplicativo precisar oferecer suporte a senhas, use este guia como referência para implementar senhas com o Gerenciador de credenciais.
O Credential Manager oferece uma API unificada para seu app salvar e recuperar credenciais de usuários, incluindo nomes de usuários e senhas. Isso simplifica o processo de login para os usuários e permite que eles usem provedores de credenciais sem problemas.
Pré-requisitos
A implementação de senhas do Credential Manager funciona em dispositivos com Android 4.4 (nível 19 da API) e versões mais recentes.
Visão geral
Este guia se concentra nas mudanças necessárias no seu app para criar, salvar e fazer login com uma senha.
- Adicione dependências ao app: adicione as bibliotecas necessárias do Credential Manager.
- Instanciar o Credential Manager: crie uma instância do Credential Manager.
- Salvar a senha de um usuário: armazene as credenciais do usuário com segurança.
- Fazer login com uma senha: recupere e use as credenciais armazenadas para fazer login.
- Identifique os campos que devem usar o preenchimento automático: use o preenchimento automático para melhorar a experiência do usuário.
- Adicione suporte ao Digital Asset Links: adicione suporte para compartilhar senhas em apps e sites vinculados.
Adicionar dependências ao app
Adicione as seguintes dependências ao arquivo build.gradle do módulo do app:
Kotlin
dependencies { implementation("androidx.credentials:credentials:1.7.0-alpha02") }
Groovy
dependencies { implementation "androidx.credentials:credentials:1.7.0-alpha02" }
Instanciar o Credential Manager
Use o contexto do app ou da atividade para criar um objeto CredentialManager.
// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)
Salvar a senha de um usuário
Quando um usuário se inscrever ou atualizar a senha no seu app, salve essas credenciais no gerenciador de senhas dele.
Construa uma solicitação de senha: o objeto
CreatePasswordRequestcontém o nome de usuário e a senha a serem salvos. ChamecredentialManager.createCredential()para iniciar o processo de salvamento.Processar a resposta: processe o
CreatePasswordResponsee gerencie os erros (por exemplo, se o usuário cancelar a solicitação).
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)
}
}
}
Fazer login com uma senha
Para recuperar as credenciais salvas, crie um GetCredentialRequest com um
GetPasswordOption e chame getCredential(). Para filtrar quais senhas são buscadas com base nos IDs de usuário especificados, use o campo opcional allowedUserIds.
val getPasswordOption = GetPasswordOption()
val credentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(getPasswordOption)
.build()
Identificar campos que devem usar o preenchimento automático
O atributo android:isCredential ajuda os provedores de credenciais a identificar campos destinados ao preenchimento automático, o que resulta em uma experiência do usuário mais tranquila. Esse atributo complementa o autofillHints atual.
Os benefícios de indicar que determinados campos são destinados ao preenchimento automático incluem:
- Precisão aprimorada do preenchimento automático: ajuda os gerenciadores de senhas e o sistema Android a identificar melhor os campos destinados a credenciais.
- Experiência do usuário aprimorada: pode levar a sugestões de preenchimento automático mais fluidas e confiáveis.
Inclua o atributo isCredential nos campos de nome de usuário e senha, conforme mostrado no exemplo a seguir:
<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" />
Como alternativa, adicione o atributo de forma programática, conforme mostrado no snippet a seguir:
if (android.os.Build.VERSION.SDK_INT >=
android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
usernameEditText.isCredential = true
passwordEditText.isCredential = true
}
Adicionar suporte para Digital Asset Links
Para garantir a compatibilidade com gerenciadores de senhas, configure os Digital Asset Links entre o app e o site. Isso permite que as credenciais sejam compartilhadas com segurança nas duas plataformas.