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 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:
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); ...
Crea un objeto
SavePasswordRequest
SavePasswordRequest savePasswordRequest = SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
Obtén un
PendingIntent
para mostrar el diálogo de guardado de contraseña desdeIdentity.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
});