Para habilitar el acceso con un solo 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 para guardar contraseñas, se le mostrará al usuario un diálogo de hoja inferior que le permitirá elegir si quiere guardar su contraseña y en qué Cuenta de Google quiere hacerlo.
Inicia el diálogo de la hoja inferior para guardar la contraseña
Debes iniciar el diálogo de guardar contraseña después de autenticar el nombre de usuario y la contraseña con tu backend. Mantén las credenciales en la memoria durante la autenticación. Después de confirmar que las credenciales son válidas, inicia el diálogo de guardar haciendo lo siguiente:
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 guardar 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); })
Cómo controlar los resultados del guardado de 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
});