认证
用户指引:HTTP 和 WebSocket 接口认证流程
以下是 CoinEx 交易所 HTTP 和 WebSocket 接口认证流程的用户指引。
步骤一:获取 API 密钥
警告
请不要在任何网络请求中直接传输在步骤一
中获取到的secret_key
,这样可能会导致您的资产收到损失。
- 登录 CoinEx。导航到 API 管理页面。创建一个新的 API 或使用现有的 API。
- 从已经创建的 API 记录中获取
access_id
及secret_key
。
步骤二:生成认证参数
HTTP 生成方法
- 按照
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/POSTrequest_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
中的取值
- 以
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 生成方法
- 以
timestamp
作为字符串,示例如下:
prepared_str = "1700490703564"
- 以
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
}
}