跳到主要内容

认证

用户指引:HTTP 和 WebSocket 接口认证流程

以下是 CoinEx 交易所 HTTP 和 WebSocket 接口认证流程的用户指引。

步骤一:获取 API 密钥

警告

请不要在任何网络请求中直接传输在步骤一中获取到的secret_key,这样可能会导致您的资产收到损失。

  1. 登录 CoinEx。导航到 API 管理页面。创建一个新的 API 或使用现有的 API。
  2. 从已经创建的 API 记录中获取 access_idsecret_key

步骤二:生成认证参数

HTTP 生成方法

  1. 按照 method + request_path + body(optional) + timestamp 的格式将数据拼接成字符串,示例如下:
prepared_str = "GET"+"/v2/spot/pending-order?market=BTCUSDT&market_type=SPOT&side=buy&page=1&limit=10"+"1700490703564"

如上述例子所示:

  • method 表示 HTTP 请求方法,字母大写,如: GET/POST
  • request_path 表示请求的接口的路径地址,包含请求参数(query_string),如:/v2/spot/pending-order?market=BTCUSDT&market_type=SPOT&side=buy&page=1&limit=10。如果没有请求参数(query_string),只需要包含请求路径,如: /v2/spot/pending-order
  • body 表示 HTTP 请求体,如上述例子中,在某些方法(GET/DELETE)中没有请求体,则可以省略。请求体示例如下: '{"market": "BTCUSDT", "type": "buy", "amount": "0.001", "price": "10000"}'
  • timestamp 表示为请求发出的时间,值为 X-COINEX-TIMESTAMP中的取值
  1. secret_key 作为key,对上面字符串进行HMAC-SHA256签名,转换为16进制小写,长度为64位,伪代码如下:
signed_str = hmac.new(bytes(secret_key, 'latin-1'), msg=bytes(prepared_str, 'latin-1'), digestmod=hashlib.sha256).hexdigest().lower()

WebSocket 生成方法

  1. timestamp 作为字符串,示例如下:
prepared_str = "1700490703564"
  1. secret_key 作为key,对上面字符串进行HMAC-SHA256签名,转换为16进制小写,长度为64位,伪代码如下:
signed_str = hmac.new(bytes(secret_key, 'latin-1'), msg=bytes(prepared_str, 'latin-1'), digestmod=hashlib.sha256).hexdigest().lower()

步骤三:构建认证请求

HTTP 认证请求

在构建 HTTP 认证请求的时候,需要添加以下公共参数:

  • X-COINEX-KEY。即在步骤一中获取到的 access_id
  • X-COINEX-SIGN。即在步骤二中生成的 signed_str
  • X-COINEX-TIMESTAMP. 即在接入指南中提到的指示请求发出时间的参数。

示例如下:

GET /assets/spot/balance HTTP/1.1
Host: api.coinex.com
-H 'X-COINEX-KEY: XXXXXXXXXX' \
-H 'X-COINEX-SIGN: XXXXXXXXXX' \
-H 'X-COINEX-TIMESTAMP: 1700490703564

WebSocket 认证请求

在访问需要认证的 WebSocket 接口之前,需要调用方法名为 server.sign 的认证方法,可通过此链接查看接口详情。

其中对应的请求字段如下:

  • access_id。即在步骤一中获取到的 access_id
  • signed_str。即在步骤二中获取到的 signed_str
  • timestamp。当前的毫秒级时间戳。

示例如下:

{
"id": 15,
"method": "server.sign",
"params": {
"access_id": "XXXXXXXXXX",
"signed_str": "XXXXXXXXXX",
"timestamp": 1234567890123
}
}