API Docs

授权端 API 文档

客户端软件 / 网站系统接入指南 · 全部接口 POST + JSON

一、接入准备

登录管理后台 →「应用管理」创建应用,获得 app_keyapp_secret(64 位十六进制)。接口地址:

https://author.secke.cn/api/?action={接口名}

所有接口统一使用 POST 请求,Content-Type: application/json,响应统一为 JSON:

{ "code": 0, "msg": "验证成功", "time": 1784700000, "data": { … } }

code 为 0 表示成功,非 0 为错误码(见文末错误码表)。

二、签名算法(重要)

time 接口外,所有请求必须携带以下公共参数:

参数说明
app_key应用 AppKey
timestamp客户端 Unix 时间戳(秒),与服务器误差 ≤ 300 秒
nonce8~64 位随机字符串,一次性使用,防重放
sign签名值,计算方式如下

签名步骤

  • 1. 取全部请求参数(不含 sign 本身,空值跳过),按参数名字典序排序
  • 2. 拼成 k1=v1&k2=v2&k3=v3 形式
  • 3. 以 app_secret 为密钥计算 HMAC-SHA256,取小写 hex

PHP 签名示例

// 计算签名 function sign(array $params, string $secret): string { unset($params['sign']); ksort($params); $pairs = []; foreach ($params as $k => $v) { if ($v === '' || $v === null || is_array($v)) continue; $pairs[] = $k . '=' . $v; } return hash_hmac('sha256', implode('&', $pairs), $secret); }

Python 签名示例

# 计算签名 import hmac, hashlib def sign(params: dict, secret: str) -> str: params = {k: v for k, v in params.items() if k != 'sign' and v not in ('', None)} s = '&'.join(f'{k}={params[k]}' for k in sorted(params)) return hmac.new(secret.encode(), s.encode(), hashlib.sha256).hexdigest()

三、接口列表

POST?action=time 服务器校时(免签名)

参数:app_key。客户端时间不准时先调它校准。

{ "code": 0, "msg": "success", "data": { "server_time": 1784700000, "server_date": "2026-07-22 12:00:00", "timezone": "Asia/Shanghai" } }

POST?action=verify 验证授权码(核心)

参数必填说明
code授权码
device_hash设备指纹;提供时自动绑定/校验设备数
{ "code": 0, "msg": "验证成功", "data": { "license": { "type": "time", "expire_at": "2027-07-22 00:00:00", "remain_count": null, "max_devices": 2 }, "variables": { "latest_version": "1.0.0", "vip_download_url": "…" }, "notice": "欢迎使用 AuthSite 授权系统", "server_time": 1784700000 } }

POST?action=heartbeat 心跳保活

参数:codedevice_hash。建议每 3~5 分钟一次,校验授权有效性与在线状态。

POST?action=unbind 解绑设备

参数:codedevice_hash。解除该设备与授权码的绑定关系。

POST?action=vars 获取公开云变量

仅需公共签名参数。返回 is_public=1 的变量(公告、版本号等),无需授权码。

POST?action=domain 域名授权验证

参数:domain。网站系统服务端调用,校验域名授权有效性(自动剥掉协议头与路径)。

四、错误码表

code含义
0成功
400 / 40001 / 40002缺少参数 / app_key 格式错误 / nonce 长度错误
40100签名校验失败
40101 / 40102请求过期(时间戳超差)/ nonce 重复
40300应用已禁用
40302授权码已封禁
40303授权已到期
40304授权次数已用尽
40305 / 40306授权已失效 / 设备未绑定(心跳)
40307域名授权已封禁
40308设备绑定数已达上限
40401 / 40402 / 40403 / 40404应用不存在 / 授权码不存在 / 域名未授权 / 绑定关系不存在
40301 / 42901IP 已被封禁 / 请求频率超限
50000+服务器内部错误

五、完整调用示例(PHP)

$API = 'https://author.secke.cn/api/'; $appKey = '你的app_key'; $appSecret = '你的app_secret'; $params = [ 'app_key' => $appKey, 'timestamp' => time(), 'nonce' => bin2hex(random_bytes(16)), 'code' => 'XXXX-XXXX-XXXX-XXXX', 'device_hash' => md5(php_uname()), ]; $params['sign'] = sign($params, $appSecret); // 签名函数见第二节 $resp = http_post_json($API . '?action=verify', $params); // $resp['code'] === 0 即验证通过,$resp['data']['variables'] 为云变量