r - 在 R 中进行身份验证的 API POST
问题描述
我正在尝试在 Bitmex 上进行 POST 操作,以 4009.9 的价格购买一份名为 XBTUSD(比特币/美元)的合约,到期时间为 1545674400(UNIX 时间戳,从现在开始几个小时),我们需要进行身份验证。这看起来很简单。
我们正在使用 API,我们正在用 R 编写。(api-secret 是假的,抱歉!!!)
我们需要在签名中使用 hmac 转换我们的请求,使其成为以 16 为基数的数字。
我们尝试定义我们的签名
signature=hmac("Kjxd5H5sPnBq6oXmnKrQAbKPIAXuKsInHRmD9CF2Dh3-4I6j", 'POST/api/v1/order1545674400{"symbol":"XBTUSD","price":4009.0,"orderQty":1}', algo = "sha256")
然后发布
POST("https://www.bitmex.com/api/v1/order",body = 'POST/api/v1/order1545674400{"symbol":"XBTUSD","price":4009.0,"orderQty":1}',add_headers("api-key":"R1IdBlJD0-fCXypR2TTQVCF6", "api-signature":signature))
或类似的东西,我们得到
403 或 401
我不明白出了什么问题。我可以发出不需要身份验证的请求,但不是那些需要身份验证的请求!
谢谢!
解决方案
乍一看,您似乎忘记了标头中的“api-expires”参数。对我有用的方法是,该主体是一个命名列表(如果您使用的是 httr 包),在“POST”函数调用中带有附加参数:encode = 'json'。
如果您想更详细地了解错误的含义,请执行以下操作:
msg = POST(....) rawToChar(msg$content)
推荐阅读
- c - 如何将来自 CPU 的 32 位内存地址映射到 C 中的本地内存
- ruby-on-rails - 带有 pg "rake db:create" 的 Rails
- botium-box - Retrieve Botium error message for IntentAsserter as a Json for mocha reporting
- c - 子进程是否应该比父进程执行得慢?
- php - 显示此站点的 localhost 项目是欺骗性警告
- flutter - Flutter Undraw Widget - 更新后的PictureStream错误
- swift - 如何将单独 Swift 包中的 C 标头包含到另一个 Swift 包的 C 部分中
- react-native - 如何使用 React native 找到解决方案
- ios - ScrollToTtem 不流畅
- geolocation - 为什么通过 IP 地址打开 Prestashop 的地理定位在 PageSpeed Insight 上给我一个 503 错误?