認證
使用者指引: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-orderbody表示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_idX-COINEX-SIGN。即在步驟二中產生的signed_strX-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_idsigned_str。即在步驟二中取得到的signed_strtimestamp。當前的毫秒級時間戳記。
範例如下:
{
"id": 15,
"method": "server.sign",
"params": {
"access_id": "XXXXXXXXXX",
"signed_str": "XXXXXXXXXX",
"timestamp": 1234567890123
}
}