1. 准备产品和许可证
适用于需要绑定设备的软件、命令行工具或服务。先用不计次数的 export 功能验证授权流程,再添加功能次数规则。
- 安装 Go 1.26 或更新版本。在控制台打开“快速接入”,创建产品。
- 在产品授权策略中启用名为 export 的功能,创建或选择测试许可证。
- 下载配置好的 Go 接入包。product.json 是产品公共配置;sdk-demo.json 含测试授权码,不要放进客户安装包。
2. 安装到自己的项目
打开 SDK 文档,选择 Go 和操作系统,在项目目录执行官网的版本化安装命令,并使用安装器生成的本地模块依赖。导入路径为 github.com/spf86/licentivo-sdk;安装器提供这个独立模块,因此本例不依赖 GitHub 发布。
接入时固定安装版本。执行 go list -m github.com/spf86/licentivo-sdk 检查模块,把自己的 product.json 放到程序工作目录。
新项目可运行下列命令;已有 go.mod 的项目跳过第一行。使用自己从控制台下载的 product.json。保存下一节的 main.go 后,设置 LICENTIVO_LICENSE_KEY 再执行 go run .。
go mod init example.com/licensed-app
Invoke-WebRequest 'https://www.licentivo.com/assets/sdk/releases/v0.10.0/install.ps1' -OutFile install-licentivo.ps1
./install-licentivo.ps1 -Language go -Version 0.10.0go mod init example.com/licensed-app
curl --fail --location --proto '=https' --proto-redir '=https' --tlsv1.2 \
-o install-licentivo.sh \
'https://www.licentivo.com/assets/sdk/releases/v0.10.0/install.sh'
bash install-licentivo.sh go --version 0.10.03. 保护一次真实操作
将下面完整程序保存为 main.go。用 LICENTIVO_LICENSE_KEY 传入测试授权码,正式应用可替换为激活输入框。安装后执行 go run .,成功会生成 licensed-report.txt。
package main
import (
"context"
"fmt"
"os"
licentivo "github.com/spf86/licentivo-sdk"
)
func run() error {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
client, err := licentivo.OpenWithLicense(ctx, "product.json",
os.Getenv("LICENTIVO_LICENSE_KEY"),
func(err error) { fmt.Fprintln(os.Stderr, "License refresh:", err) })
if err != nil {
return err
}
defer client.Close()
err = client.RunFeature("export", func() error {
return os.WriteFile("licensed-report.txt", []byte("Licensed export\n"), 0600)
})
if err != nil {
return err
}
fmt.Println("Created licensed-report.txt")
return nil
}
func main() {
if err := run(); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}4. 在应用生命周期内保留一个客户端
正式应用在启动时创建客户端,将 RunFeature 放进导出按钮或命令处理函数,到退出时才调用 Close。普通设备绑定授权退出后保留注册;SDK 会停止后台任务。
首次激活成功后,SDK 保存本机绑定凭据。以后在同一用户及缓存位置启动,可以传入空授权码恢复。客户无需管理 activation_id,也无需自行发送 HTTP 心跳。
仍有效的设备绑定离线租约可以立即恢复,并由 SDK 后台刷新。浮动或必须在线的策略需要服务器成功响应。后台错误日志不能作为绕过功能检查的依据。
5. 验证允许和拒绝的操作
- 带测试授权码运行,确认导出文件生成。
- 删除 LICENTIVO_LICENSE_KEY,在同一用户下再次启动,验证已保存凭据恢复。
- 将 export 改为许可证没有的功能,确认返回错误且业务没有生成文件。
- 只有策略允许且签名租约仍有效时,才检查断网重启。
常见接入问题
找不到配置时,检查 product.json 是否位于当前工作目录。从桌面快捷方式启动时可傳入配置绝对路径。
功能拒绝时,检查功能名和授权策略。RunFeature 只检查权益,不检查剩余次数;次数功能使用 RunMeteredFeature。
设备超限、许可证过期或服务器明确拒绝,需要客户或厂商处理授权。展示错误及可用的请求编号,不要在应用中放厂商管理 API Key。