Authenticated endpoints require three HTTP headers:
x-user-api-key
你的 API token 公钥
x-user-api-timestamp
13 位毫秒级 Unix 时间戳
x-user-api-signature
小写十六进制 HMAC-SHA256 签名
签名载荷
签名通过将以下值用换行符拼接后计算得到:
<HTTP_METHOD>
<请求路径>
<原始 query 字符串(不含 ?)>
<x-user-api-timestamp>
<原始请求体的 sha256 十六进制值>
权限范围规则
read_write
GET、POST、PATCH 和 DELETE 请求
错误代码
401 INVALID_SIGNATURE
HMAC 签名校验失败
401 INVALID_TIMESTAMP
请求时间戳超出 5 分钟窗口
403 INSUFFICIENT_SCOPE
该 token 没有执行此操作所需的 scope
403 IP_NOT_ALLOWED
请求 IP 不在 token 的允许 IP 列表中
409 USER_ALIAS_REQUIRED
用户必须先创建默认 alias
代码示例(JavaScript)
const crypto = require('crypto');
function signRequest(method, path, queryString, body, timestamp, secret) {
const payload = [
method.toUpperCase(),
path,
queryString || '',
timestamp,
crypto.createHash('sha256').update(body || '').digest('hex')
].join('\n');
return crypto.createHmac('sha256', secret)
.update(payload)
.digest('hex');
}
const timestamp = Date.now().toString();
const signature = signRequest('GET', '/v1/me', '', '', timestamp, 'your-secret');