認證
使用者指引: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
}
}