Para integrar o Smart Lock para senhas ao seu app Android, adicione chamadas à API Credentials ao fluxo de inicialização e login do seu app. O diagrama a seguir mostra o fluxo de um app Android típico que usa o Smart Lock para senhas.
Embora existam muitas maneiras de integrar o Smart Lock para senhas, e as especificações de uma integração dependem da estrutura e da experiência do usuário do app, mas o fluxo a seguir é recomendado para a maioria dos apps. Os apps que usam esse fluxo têm estas vantagens na experiência do usuário:
- Os usuários existentes do serviço que têm uma única credencial salva são conectados imediatamente e vão diretamente para a visualização conectada ao abrir o app.
- Os usuários que têm várias credenciais salvas ou que desativaram o login automático precisam responder a apenas uma caixa de diálogo antes de acessar a visualização de login do app.
- Os usuários que não têm credenciais salvas ou ainda não se inscreveram, podem escolher o nome e o e-mail com um único toque e ser enviados de maneira inteligente para a visualização de login ou de inscrição com essas informações pré-preenchidas.
- Quando os usuários saem, o app garante que eles não sejam conectados novamente automaticamente.
Recuperar credenciais
- Quando o app for iniciado, se nenhum usuário já tiver feito login, chame
CredentialsClient.request()
. - Se o
Task
for bem-sucedido, acesse as credenciais do usuário comgetResult().getCredential()
e use-as para fazer login. - Se
Task
falhar e a exceção for uma instância deResolvableApiException
egetStatusCode()
retornarRESOLUTION_REQUIRED
, a entrada do usuário será necessária para escolher uma credencial. ChamestartResolutionForResult()
para solicitar que o usuário selecione uma conta salva. Em seguida, chamegetParcelableExtra(Credential.EXTRA_KEY)
para receber as credenciais do usuário e usá-las para fazer login.
Salvar credenciais
Se o
Task
falhar com umApiException
egetStatusCode()
retornarSIGN_IN_REQUIRED
, o usuário não terá credenciais salvas e precisará fazer login ou se inscrever manualmente usando seu fluxo atual de inscrição ou login. Depois que o usuário concluir o login, ofereça a ele a oportunidade de salvar as credenciais para recuperação futura (etapa 5).Para ajudar o usuário a fazer login ou se inscrever com mais rapidez e facilidade, recupere dicas, como o endereço de e-mail do usuário. O usuário pode selecionar a dica e pular a etapa de digitar as credenciais. Se o app exige que os usuários façam login, você pode optar por recuperar dicas imediatamente após a falha na solicitação de credenciais iniciais. Caso contrário, pode esperar até que o usuário inicie o fluxo de login ou inscrição.
- Chame
CredentialsClient.getHintPickerIntent()
e inicie a intent para solicitar que o usuário selecione uma conta. Em seguida, chamegetParcelableExtra(Credential.EXTRA_KEY)
para receber a dica de login. - Se o ID do usuário da dica corresponder a um usuário atual, preencha automaticamente o formulário de login com ele e permita que o usuário insira a senha para fazer login.
- Se o ID do usuário da dica não corresponder a um usuário atual, preencha automaticamente o formulário de inscrição com o ID e o nome do usuário e permita que o usuário crie uma nova conta.
- Chame
-
Depois que o usuário fizer login ou criar uma conta, salve o ID do usuário e a senha com
CredentialsClient.save()
.Se o usuário tiver feito login com um provedor de identidade federado, como o Login do Google, crie o objeto
Credential
com o endereço de e-mail do usuário como o ID e especifique o provedor de identidade comsetAccountType
.
Sair
- Quando o usuário sair, chame
CredentialsClient.disableAutoSignIn()
para evitar que ele seja conectado de novo imediatamente. Desativar o login automático também permite que os usuários alternem entre contas com facilidade, por exemplo, entre contas de trabalho e pessoais ou entre contas em dispositivos compartilhados, sem precisar reinserir as informações de login.
Tudo pronto para integrar o Smart Lock para senhas ao seu app? Comece a usar o serviço.