跳到主要内容

身份验证

所有以 /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) 生成

步骤:

  1. 编写用于生成数字签名的"请求字符串",其中包括:
  • a. 方法类型:GET\n
  • b. 访问路径,后跟"\n",例如 /ws\n
  • c.参数列表:signTimestamp=1631018760000
  • 注意:所有参数都必须是 URL/UTF-8 编码,即空格编码为 "%20"
  • d. 根据上述示例值,签名生成的最终字符串将是: GET\n /ws\n signTimestamp=1631018760000
  1. 使用上一步生成的"请求字符串"和您的密钥(密钥)生成数字签名:
  • a. 调用 HmacSHA256 哈希函数以获取哈希值,其中请求字符串和上一步获得的 API 私钥作为两个参数。
  • b. 用 base-64 对此哈希进行编码,并将结果值用作此接口调用的数字签名。
  • c.例如:5g4Rx5A2bLyMWFgR3Aqp+B4w+iJkL7n5OD3SuYtCJK8=
  1. 使用上面生成的签名的请求示例:
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"
}

订阅示例

示例请求和流

请求 → 收据确认 → 流(连续馈送)