R中具有身份验证的API POST

时间:2018-12-24 18:27:54

标签: r api http authentication

我正在尝试对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

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

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

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