跳到主要内容
版本:最新

鉴权

Bitzoom 合约 API 对私有接口使用 JWT(JSON Web Token)Bearer 鉴权。

鉴权类型

类型说明适用场景
None无需鉴权公开行情数据
Bearer Token在 Authorization 请求头中携带 JWT账户、交易、钱包

获取 Token

测试环境

开发联调可先获取测试 Token:

curl -X GET "http://119.8.50.236:8088/api/servermanage/testtoken?userid=YOUR_USER_ID"

生产环境

  1. 登录 Bitzoom 账户
  2. 进入 API Management
  3. 生成 API 凭证
  4. 使用凭证换取 JWT Token

使用 Token

Authorization 请求头中携带 JWT:

curl -X GET "http://119.8.50.236:8088/api/v1/balance" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."

代码示例

Python

import requests

BASE_URL = "http://119.8.50.236:8088"
TOKEN = "your_jwt_token"

headers = {
"Authorization": f"Bearer {TOKEN}",
"Content-Type": "application/json"
}

# 查询账户余额
response = requests.get(f"{BASE_URL}/api/v1/balance", headers=headers)
print(response.json())

JavaScript (Node.js)

const axios = require('axios');

const BASE_URL = 'http://119.8.50.236:8088';
const TOKEN = 'your_jwt_token';

const client = axios.create({
baseURL: BASE_URL,
headers: {
'Authorization': `Bearer ${TOKEN}`,
'Content-Type': 'application/json'
}
});

// 查询账户余额
async function getBalance() {
const response = await client.get('/api/v1/balance');
console.log(response.data);
}

getBalance();

Go

package main

import (
"fmt"
"io"
"net/http"
)

func main() {
client := &http.Client{}
req, _ := http.NewRequest("GET", "http://119.8.50.236:8088/api/v1/balance", nil)
req.Header.Set("Authorization", "Bearer your_jwt_token")

resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()

body, _ := io.ReadAll(resp.Body)
fmt.Println(string(body))
}

Token 过期

JWT 有时效。过期后:

  1. 你会收到 -1002 Unauthorized 错误
  2. 使用凭证重新申请 Token
  3. 在应用中更新新 Token
最佳实践

在应用中实现自动刷新 Token,平滑处理过期场景。

安全最佳实践

  1. 不要在客户端代码暴露 Token - 建议通过后端代理
  2. 使用环境变量 - 不要硬编码 Token
  3. 定期轮换 Token - 周期性刷新凭证
  4. 使用 IP 白名单 - 尽可能限制来源 IP
  5. 监控 API 使用情况 - 及时发现异常调用
# 将 token 存入环境变量
export BITZOOM_API_TOKEN="your_jwt_token"

# 在脚本中使用
curl -X GET "http://119.8.50.236:8088/api/v1/balance" \
-H "Authorization: Bearer $BITZOOM_API_TOKEN"

排查指南

错误原因解决方案
-1002 UnauthorizedToken 无效或已过期重新获取 Token
-1022 Invalid signatureToken 格式或签名异常检查 Token 结构
401 Unauthorized未携带 Authorization 请求头添加 Bearer Token 请求头

下一步