1. Siapkan produk dan lisensi
Gunakan jalur ini untuk utilitas desktop, aplikasi baris perintah, atau layanan yang memerlukan lisensi yang dikunci node. Mulailah dengan fitur ekspor tanpa meteran sehingga Anda dapat memverifikasi lisensi sebelum menambahkan penghitung penggunaan.
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.
- Instal Go 1.26 atau lebih baru. Di konsol, buka Integrasi cepat dan buat produk.
- Aktifkan fitur bernama ekspor dalam kebijakan otorisasi produk. Buat atau pilih lisensi pengujian.
2. Instal SDK ke dalam proyek Anda
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.
go get github.com/spf86/licentivo-sdk@v0.11.63. Lindungi satu operasi
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.
// One protected operation. Keep the client alive for the lifetime of your app.
package main
import (
"context"
"fmt"
licentivo "github.com/spf86/licentivo-sdk"
"os"
)
// BEGIN LICENTIVO PRODUCT
// Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
const productID = "YOUR_PRODUCT_ID"
var trustedKeys = map[string]string{"YOUR_KEY_ID": "YOUR_PUBLIC_KEY"}
// END LICENTIVO PRODUCT
func setting(name, fallback string) string {
if value := os.Getenv(name); value != "" {
return value
}
return fallback
}
// Call this at the business entry point, including keyboard/menu/CLI actions.
func exportReport(path string) error {
// Replace this write with your existing, non-metered export operation.
return os.WriteFile(path, []byte("A report generated by the licensed application.\n"), 0600)
}
func run() error {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
// In a GUI, obtain key from the activation input. Later starts use an empty key.
client, err := licentivo.OpenProduct(ctx, productID, trustedKeys, os.Getenv("LICENTIVO_LICENSE_KEY"), func(err error) {
fmt.Fprintln(os.Stderr, "Background verification:", err)
})
if err != nil {
return err
}
defer client.Close() // Floating seats return; node-locked registration stays.
feature := setting("LICENTIVO_FEATURE", "export")
path := setting("LICENTIVO_OUTPUT", "licensed-report.txt")
action := func() error { return exportReport(path) }
if os.Getenv("LICENTIVO_METERED") == "1" {
err = client.RunMeteredFeature(ctx, feature, 1, os.Getenv("LICENTIVO_OPERATION_ID"), action)
} else {
err = client.RunFeature(feature, action)
}
if err != nil {
return err
}
fmt.Printf("License OK: %s is available\nExport completed: %s\n", feature, path)
return nil
}
func main() {
if err := run(); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(2)
}
}
4. Pertahankan satu klien seumur hidup aplikasi
Dalam aplikasi nyata, buka klien saat startup dan tempatkan RunFeature di dalam tombol ekspor atau pengendali perintah. Biarkan klien tetap hidup sampai dimatikan. Tutup menghentikan pekerjaan latar belakang; itu mempertahankan registrasi biasa yang dikunci dengan node.
SDK menyimpan kredensial terikat mesin setelah aktivasi. Mulai nanti dapat meneruskan kunci kosong dan memulihkannya dari akun pengguna dan lokasi cache yang sama. Anda tidak perlu menyimpan ID aktivasi atau mengirim sendiri HTTP detak jantung.
Sewa offline yang dikunci dengan simpul yang valid dapat segera dipulihkan sementara SDK menyegarkan secara online di latar belakang. Kebijakan mengambang atau hanya online memerlukan respons server yang berhasil. Jangan pernah menganggap kesalahan latar belakang yang dicatat sebagai izin untuk melewati pemeriksaan fitur yang gagal.
5. Verifikasi operasi yang diizinkan dan ditolak
- Jalankan sekali dengan kunci tes dan konfirmasikan bahwa laporan itu ada.
- Hapus LICENTIVO_LICENSE_KEY dan jalankan kembali di bawah pengguna yang sama: kredensial yang disimpan harus dipulihkan.
- Ubah ekspor ke fitur yang tidak ada dalam lisensi: operasi harus mengembalikan kesalahan tanpa menulis laporan.
- Periksa restart offline hanya jika kebijakan mengizinkannya dan sewa yang ditandatangani masih valid.
Masalah 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 yang ditolak memerlukan pemeriksaan nama fitur dan kebijakan lisensi; RunFeature memeriksa hak, bukan sisa penggunaan. Gunakan RunMeteredFeature untuk penghitung.
Batasan perangkat, lisensi yang sudah habis masa berlakunya, atau penolakan server secara eksplisit mengharuskan pelanggan atau vendor untuk menyelesaikan otorisasi. Tampilkan kesalahan dan minta ID jika tersedia. Jangan pernah menyertakan kunci manajemen vendor dalam aplikasi.