身份验证
所有以 /ws/v3/public
开头的请求都不需要身份验证。所有 /ws/v3/private
请求都需要身份验证,身份验证以连接后发送的"auth"消息的形式进行:
- "key" - 值为 api 调用者的 apiKey 的条目。例如
"A…-99…"
- "signTimestamp" - 值为时间戳的条目。例如
"1649371360000"
- "signature" - 值为 API 调用者为请求生成的签名的条目。例如
"4F…%3D"
。 - "signatureMethod" - 可选条目,值为签名方法。例如"HmacSHA256"
- "signatureVersion" - 可选条目,值为签名版本。例如"2"
示例:
{
"event": "subscribe",
"channel": ["auth"],
"params": {
"key": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX",
"signTimestamp": XXXXXXXXXXXX,
"signature": "XXXXXXXXXXXXXXXXXX"
}
}
WS 签名 (sign) 生成
步骤:
- 编写用于生成数字签名的"请求字符串",其中包括:
- a. 方法类型:
GET\n
- b. 访问路径,后跟"\n",例如
/ws\n
- c.参数列表:
signTimestamp=1631018760000
- 注意:所有参数都必须是 URL/UTF-8 编码,即空格编码为
"%20"
- d. 根据上述示例值,签名生成的最终字符串将是:
GET\n
/ws\n
signTimestamp=1631018760000
- 使用上一步生成的"请求字符串"和您的密钥(密钥)生成数字签名:
- a. 调用 HmacSHA256 哈希函数以获取哈希值,其中请求字符串和上一步获得的 API 私钥作为两个参数。
- b. 用 base-64 对此哈希进行编码,并将结果值用作此接口调用的数字签名。
- c.例如:
5g4Rx5A2bLyMWFgR3Aqp+B4w+iJkL7n5OD3SuYtCJK8=
- 使用上面生成的签名的请求示例:
wss://ws.poloniex.com/ws/v3/private
示例:
{
"event": "subscribe",
"channel": ["auth"],
"params": {
"key": "A3xxxxxx-99xxxxxx-84xxxxxx-7xxxx",
"signTimestamp": 1631018760000,
"signatureMethod": "HmacSHA256",
"signatureVersion": "2",
"signature": "5g4Rx5A2bLyMWFgR3Aqp+B4w+iJkL7n5OD3SuYtCJK8="
}
}
auth
访问私有频道需要先进行认证,认证成功后才能访问私有频道数据,如果遇到api key失效,需要重新认证。
请求:
{
"event": "subscribe",
"channel": ["auth"],
"params": {
"key": "XXXXXXXX-XXXXXXXX-XXXXXXXX-XXXXXXXX",
"signTimestamp": XXXXXXXXXXXX,
"signature": "XXXXXXXXXXXXXXXXXX"
}
}
响应:
# 成功返回结果
{
"data": {
"success": true,
"ts": 1645597033915
},
"channel": "auth"
}
# 失败返回结果
{
"data": {
"success": false,
"message": "Authentication failed!",
"ts": 1646276295075
},
"channel": "auth"
}
订阅示例
示例请求和流
请求 → 收据确认 → 流(连续馈送)