Cómo guardar contraseñas con la función para guardar credenciales

Para habilitar el acceso con un toque para los usuarios recurrentes, puedes solicitarles que guarden su contraseña con Google. El usuario podrá acceder con sus contraseñas guardadas en tu app y en la Web.

Cuando inicies el flujo de guardado de contraseñas, se le mostrará al usuario un diálogo de la hoja inferior que le permitirá elegir si quiere guardar su contraseña y en qué Cuenta de Google quiere guardarla.

Cómo guardar una captura de pantalla de la contraseña

Cómo iniciar el diálogo de la hoja inferior para guardar contraseñas

Debes iniciar el diálogo de guardado de contraseña después de autenticar el nombre de usuario y la contraseña con tu backend. Mantén las credenciales en la memoria mientras se realiza la autenticación. Después de confirmar que las credenciales son válidas, sigue estos pasos para iniciar el diálogo de guardado:

  1. Crea un objeto SignInPassword nuevo. Se debe inicializar con el ID de usuario que usa con tu servicio (por ejemplo, su nombre de usuario o dirección de correo electrónico) y la contraseña que deseas guardar.

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

    SavePasswordRequest savePasswordRequest =
        SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
    
  3. Obtén un PendingIntent para mostrar el diálogo de guardado de contraseña desde Identity.getCredentialSavingClient y, luego, inicia el flujo:

    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);
           })
    

Controla los resultados de guardar contraseñas

Controla el resultado del flujo de guardado de contraseñas en 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
    });