1. Siapkan produk dan lisensi
Mulailah dengan lisensi yang dikunci node dan fitur ekspor biasa. Tambahkan penggunaan terukur hanya setelah alur otorisasi dasar berfungsi.
Kuota menghitung aktivasi saat ini dan kembali setelah dilepas. Lisensi biasa tetap dihitung saat luring; lisensi mengambang juga mengembalikan kuota ketika sewanya berakhir.
- Salin ID produk dari Konsol > Produk. Buka kunci publik penandatanganan produk yang sama, lalu masukkan semua pasangan ID kunci/kunci publik ke kode inisialisasi untuk mengganti YOUR_PRODUCT_ID, YOUR_KEY_ID, dan YOUR_PUBLIC_KEY. Integrasi cepat juga dapat menghasilkan kode ini. Tidak perlu berkas konfigurasi; SDK memakai https://www.licentivo.com secara bawaan.
- Di Integrasi cepat, buat atau pilih produk. Aktifkan fitur bernama ekspor dalam kebijakannya dan siapkan lisensi pengujian.
2. Instal SDK
Instal SDK 0.11.6 dengan perintah berikut di proyek aplikasi Anda atau tambahkan dependensi build. Pengelola paket mengambil SDK; tidak perlu mengunduh dan mengekstrak kode sumber atau mengatur jalur lokal.
npm install @licentivo/sdk@0.11.63. Melindungi ekspor riil
Inisialisasikan SDK saat aplikasi dimulai atau diaktifkan. Baca kunci pelanggan dari formulir aktivasi, lalu berikan ID produk dan kunci tepercaya. Pertahankan klien sampai aplikasi ditutup. Letakkan RunFeature pada operasi bisnis nyata dan ganti ekspor dengan fungsi Anda.
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. Biarkan klien tetap hidup sampai dimatikan
Contoh baris perintah ini melakukan satu operasi dan keluar. Dalam aplikasi desktop, buka satu klien saat startup, aktifkan fitur callback dari tindakan ekspor, dan tutup klien hanya saat aplikasi keluar.
Setelah aktivasi, permulaan selanjutnya dapat membiarkan LICENTIVO_LICENSE_KEY kosong dan memulihkan kredensial pribadi di bawah lokasi pengguna dan cache yang sama. Simpan kredensial tersebut di direktori data aplikasi pengguna. Penutupan menghentikan detak jantung dan mengembalikan kursi terapung; pintu keluar normal tidak boleh menonaktifkan perangkat yang terkunci node.
Akses offline hanya tersedia jika kebijakan mengizinkannya dan izin yang ditandatangani tetap valid. Fitur yang sudah habis masa berlakunya atau ditolak harus tetap diblokir. Operasi terukur memerlukan koneksi jaringan.
Di Electron, miliki Klien dalam proses utama dan hanya mengekspos tindakan terlindungi yang diperlukan melalui antarmuka IPC yang sempit. Tunggu runFeature dan tutup; menjaga klien tetap hidup seumur hidup aplikasi. Panggilan balik asinkron harus diselesaikan sebelum melaporkan keberhasilan.
5. Jalankan dan verifikasi hasilnya
Salin ID produk dari Konsol > Produk. Buka kunci publik penandatanganan produk yang sama, lalu masukkan semua pasangan ID kunci/kunci publik ke kode inisialisasi untuk mengganti YOUR_PRODUCT_ID, YOUR_KEY_ID, dan YOUR_PUBLIC_KEY. Integrasi cepat juga dapat menghasilkan kode ini. Tidak perlu berkas konfigurasi; SDK memakai https://www.licentivo.com secara bawaan.
- Konfirmasikan bahwa lisensi yang valid dengan akses ekspor menghasilkan licensed-report.txt.
- Hapus LICENTIVO_LICENSE_KEY dan jalankan kembali menggunakan akun pengguna yang sama: kredensial yang disimpan akan dipulihkan.
- Setel LICENTIVO_FEATURE ke fitur yang tidak ada dalam lisensi dan LICENTIVO_OUTPUT ke nama file baru. Program harus melaporkan penolakan tanpa membuat file tersebut.
- Uji mulai ulang offline hanya dengan izin bertanda tangan yang diizinkan dan belum kedaluwarsa. Jangan mengabaikan pemeriksaan fitur yang gagal setelah kesalahan penyegaran latar belakang.
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
node main.mjsLICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY node main.mjsMasalah integrasi yang umum
Periksa ID produk, semua pasangan ID kunci/kunci publik, dan lisensi pelanggan. Kunci publik milik produk; lisensi dan kredensial perangkat bersifat terpisah. Jangan bagikan kunci uji atau API Key pengelolaan.
Fitur ditolak, batas perangkat tercapai, atau lisensi kedaluwarsa: periksa lisensi dan kebijakan di konsol, lalu tampilkan kesalahan SDK kepada pelanggan. Otorisasi yang gagal tidak boleh memanggil fungsi ekspor.
RunFeature memeriksa akses fitur; varian terukur mencadangkan dan menyelesaikan penggunaan yang dikonfigurasi. Gunakan ID operasi yang stabil untuk setiap pekerjaan bisnis nyata dan periksa hasil yang tahan lama sebelum memulihkan pekerjaan yang terputus.
Modul tidak ditemukan: instal @licentivo/sdk dalam proyek yang sama yang berisi main.mjs. proxy_url yang dikonfigurasi juga memerlukan paket undici opsional yang kompatibel dengan versi Node.js Anda.