【发布时间】:2023-03-23 10:37:01
【问题描述】:
我正在尝试使用 httr R 包通过他们的 API 在 BitMex 上下订单。
我在here 上找到了一些指导,在分别在对象 K 和 S 中指定了我的 API 密钥和秘密之后,我尝试了以下操作
verb <- 'POST'
expires <- floor(as.numeric(Sys.time() + 10000))
path <- '/api/v1/order'
data <- '{"symbol":"XBTUSD","price":4500,"orderQty":10}'
body <- paste0(verb, path, expires, data)
signature <- hmac(S, body, algo = 'sha256')
body_l <- list(verb = verb, expires = expires, path = path, data = data)
然后两个:
msg <- POST('https://www.bitmex.com/api/v1/order', encode = 'json', body = body_l, add_headers('api-key' = K, 'api-signature' = signature, 'api-expires' = expires))
和:
msg <- POST('https://www.bitmex.com/api/v1/order', body = body, add_headers('api-key' = K, 'api-signature' = signature, 'api-expires' = expires))
检查时给我同样的错误信息:
rawToChar(msg$content)
[1] "{\"error\":{\"message\":\"Signature not valid.\",\"name\":\"HTTPError\"}}"
我尝试按照BitMex explains to use their API 的方式进行设置,但我似乎遗漏了一些东西。他们列出了一些可能导致我的无效签名问题的问题,但它们似乎并没有帮助我。按照他们的例子,我得到了完全相同的哈希值,所以这似乎是有序的。
【问题讨论】:
-
根据我对文档的阅读,在
POST()调用中应该是encode = 'form', body = data。不过我没办法测试。 -
不幸的是,这没有帮助;我得到了同样的错误。不过谢谢!
-
你是对的,@MrFlick。它确实是这样读的,但它似乎仍然不起作用。
-
您解决了这个问题吗?我目前遇到了完全相同的问题。