Ir al contenido
LICENTIVO / INTEGRATION

Licencia de software JavaScript para Node.js y Electron

Instale Node.js SDK, active una clave de cliente y proteja una exportación asincrónica. En Electron, mantenga el cliente de licencias en el proceso principal para la identidad del dispositivo y los latidos.

Node.js 20+ / ElectronActualizado

1. Prepare el producto y la licencia.

Comience con una licencia de nodo bloqueado y una función de exportación normal. Agregue el uso medido solo después de que funcione el flujo de autorización básico.

La cuota cuenta las activaciones actuales y se recupera al liberarlas. Las licencias normales cuentan sin conexión; las flotantes también liberan cuota al vencer su arrendamiento.

  1. Copia el ID del producto en Consola > Productos. Abre las claves públicas de firma del mismo producto y pega todos los pares ID de clave/clave pública en el código de inicialización, sustituyendo YOUR_PRODUCT_ID, YOUR_KEY_ID y YOUR_PUBLIC_KEY. La integración rápida puede generar este código. No hace falta un archivo de configuración; el SDK usa https://www.licentivo.com de forma predeterminada.
  2. En Integración rápida, cree o seleccione un producto. Habilite una función denominada exportación en su política y prepare una licencia de prueba.

2. Instale el SDK

Instala el SDK 0.11.6 con el siguiente comando en tu proyecto o añade la dependencia de compilación. El gestor de paquetes obtiene el SDK; no necesitas descargar y extraer código fuente ni configurar rutas locales.

Terminal
npm install @licentivo/sdk@0.11.6

3. Proteger una exportación real

Inicializa el SDK al iniciar o activar tu programa. Lee la clave del cliente en el formulario y pasa el ID del producto y las claves de confianza. Mantén el cliente hasta cerrar. Coloca RunFeature en la operación real y sustituye la exportación por tu propia función.

Node.js 20+ / Electron · main.mjs
import {writeFile} from 'node:fs/promises';
import {Client} from '@licentivo/sdk'; // Installed package: import from '@licentivo/sdk'.

// BEGIN LICENTIVO PRODUCT
// Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
const PRODUCT_ID = 'YOUR_PRODUCT_ID';
const TRUSTED_KEYS = {'YOUR_KEY_ID': 'YOUR_PUBLIC_KEY'};
// END LICENTIVO PRODUCT

export async function exportReport(path) {
  // Replace this write with your existing, non-metered export operation.
  await writeFile(path, 'A report generated by the licensed application.\n', {mode: 0o600});
}

async function main() {
  // In Electron, create this in the main process, using customer activation input.
  const client = await Client.openProduct(
    PRODUCT_ID, TRUSTED_KEYS,
    process.env.LICENTIVO_LICENSE_KEY ?? '',
    error => console.error('Background verification:', error.message),
  );
  try {
    const feature = process.env.LICENTIVO_FEATURE ?? 'export';
    const path = process.env.LICENTIVO_OUTPUT ?? 'licensed-report.txt';
    const action = () => exportReport(path);
    if (process.env.LICENTIVO_METERED === '1') {
      await client.runMeteredFeature(feature, 1, process.env.LICENTIVO_OPERATION_ID ?? '', action);
    } else {
      await client.runFeature(feature, action);
    }
    console.log(`License OK: ${feature} is available\nExport completed: ${path}`);
  } finally {
    await client.close(); // In your application, close only when the app exits.
  }
}

main().catch(error => {console.error(error.message); process.exitCode = 2;});

4. Mantener vivo al cliente hasta el cierre.

Este ejemplo de línea de comandos realiza una operación y sale. En una aplicación de escritorio, abra un cliente al inicio, invoque la devolución de llamada de la función desde la acción de exportación y cierre el cliente solo cuando se cierre la aplicación.

Después de la activación, los inicios posteriores pueden dejar LICENTIVO_LICENSE_KEY vacío y restaurar la credencial privada con el mismo usuario y ubicación de caché. Mantenga esa credencial en el directorio de datos de la aplicación del usuario. El cierre detiene los heartbeats y devuelve los asientos flotantes; La salida normal no debe desactivar un dispositivo con nodo bloqueado.

El acceso sin conexión está disponible solo cuando la política lo permite y la concesión firmada sigue siendo válida. Una función caducada o denegada debe permanecer bloqueada. Las operaciones medidas requieren una conexión de red.

En Electron, sea propietario del Cliente en el proceso principal y exponga solo las acciones protegidas requeridas a través de una interfaz estrecha IPC. Espere a ejecutar la función y cierre; mantener vivo al cliente durante toda la vida útil de la aplicación. Una devolución de llamada asíncrona debe finalizar antes de que informe que se realizó correctamente.

5. Ejecute y verifique el resultado.

Copia el ID del producto en Consola > Productos. Abre las claves públicas de firma del mismo producto y pega todos los pares ID de clave/clave pública en el código de inicialización, sustituyendo YOUR_PRODUCT_ID, YOUR_KEY_ID y YOUR_PUBLIC_KEY. La integración rápida puede generar este código. No hace falta un archivo de configuración; el SDK usa https://www.licentivo.com de forma predeterminada.

  1. Confirme que una licencia válida con acceso de exportación crea licensed-report.txt.
  2. Borre LICENTIVO_LICENSE_KEY y vuelva a ejecutarlo con la misma cuenta de usuario: la credencial guardada debería restaurarse.
  3. Establezca LICENTIVO_FEATURE en una característica ausente de la licencia y LICENTIVO_OUTPUT en un nombre de archivo nuevo. El programa debe informar una denegación sin crear ese archivo.
  4. Pruebe un reinicio sin conexión solo con una concesión firmada permitida y vigente. No omita una verificación de función fallida después de un error de actualización en segundo plano.
Windows · PowerShell
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
node main.mjs
Linux / macOS · Bash
LICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY node main.mjs

Problemas comunes de integración

Comprueba el ID del producto, todos los pares ID de clave/clave pública y la licencia del cliente. Las claves públicas pertenecen al producto; las licencias y credenciales de dispositivo son independientes. No distribuyas claves de prueba ni API Keys de gestión.

Función denegada, límite de dispositivo alcanzado o licencia vencida: inspeccione la licencia y la política en la consola, luego muestre el error SDK al cliente. Una autorización fallida no debe llamar a la función de exportación.

RunFeature comprueba el acceso a las funciones; la variante medida reserva y liquida el uso configurado. Utilice una identificación de operación estable para cada trabajo comercial real e inspeccione su resultado duradero antes de recuperar un trabajo interrumpido.

Módulo no encontrado: instale @licentivo/sdk en el mismo proyecto que contiene main.mjs. Un proxy_url configurado necesita adicionalmente el paquete undici opcional compatible con su versión Node.js.