Salvar senhas com o salvamento de credenciais

Para ativar o login com um toque para usuários recorrentes, solicite que eles salvem da senha dele com o Google. O usuário poderá fazer login com as contas salvas senhas no seu app e na Web.

Quando você inicia o fluxo de salvamento de senha, o usuário recebe uma caixa de diálogo da parte inferior da página que permite escolher se querem salvar a senha e em qual Conta do Google ele quer salvá-lo.

Captura de tela de "Salvar senha"

Abrir a caixa de diálogo para salvar a senha na página inferior

Inicie a caixa de diálogo para salvar a senha depois de autenticar o nome de usuário e senha no back-end. Mantenha as credenciais na memória enquanto a autenticação. Depois de confirmar que as credenciais são válidas, inicie o Salvar fazendo o seguinte:

  1. Crie um novo objeto SignInPassword. Ele deve ser inicializado com o nome ID que usam com seu serviço (por exemplo, nome de usuário ou endereço de e-mail) e a senha que você quer salvar.

    private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */
    private void savePassword() {
        SignInPassword signInPassword = new SignInPassword(userId, password);
        ...
    
  2. Criar um objeto SavePasswordRequest.

    SavePasswordRequest savePasswordRequest =
        SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
    
  3. Consiga um PendingIntent para mostrar a caixa de diálogo de salvamento de senha do Identity.getCredentialSavingClient e inicie o fluxo:

    Identity.getCredentialSavingClient(activity)
       .savePassword(savePasswordRequest)
       .addOnSuccessListener(
           result -> {
               startIntentSenderForResult(
                   result.getPendingIntent().getIntentSender(),
                   REQUEST_CODE_GIS_SAVE_PASSWORD,
                   /* fillInIntent= */ null,
                   /* flagsMask= */ 0,
                   /* flagsValue= */ 0,
                   /* extraFlags= */ 0,
                   /* options= */ null);
           })
    

Gerenciar resultados de salvamento de senha

Processe o resultado do fluxo de salvamento de senha em onActivityResult:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE_GIS_SAVE_PASSWORD) {
        if (resultCode == Activity.RESULT_OK) {
            /* password was saved */
        } else if (resultCode == Activity.RESULT_CANCELED) {
            /* password saving was cancelled */
        }
    }
}
private ActivityResultLauncher<IntentSenderRequest> savePasswordHandler =
    registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -> {
        // handle intent result here
    });