【问题标题】:API POST with authentication in R在 R 中进行身份验证的 API POST
【发布时间】:2019-05-23 19:27:24
【问题描述】:

我正在尝试在 Bitmex 上执行 POST 操作,以 4009.9 的价格购买 1 份名为 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

我不明白出了什么问题。我可以发出不需要身份验证的请求,但不需要身份验证的请求!

谢谢!

【问题讨论】:

  • 正文中是否有任何内容为 401 或 403?任何额外的标题? 403 和 401 是非常不同的。因此,正文、标题或 BitMex 的文档中应该有提示来解释这一点。如果您使用 cUrl 或其他 HTTP 客户端运行请求,会发生什么情况?

标签: r api http authentication


【解决方案1】:

乍一看,您似乎忘记了标头中的“api-expires”参数。 对我有用的方法是,该主体是一个命名列表(如果您使用的是 httr 包),在“POST”函数调用中带有附加参数:encode = 'json'。

如果您想更详细地了解错误的含义,请执行以下操作:

味精 = POST(....) rawToChar(msg$content)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多