API POST с аутентификацией в R - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь выполнить действие POST для Bitmex, чтобы купить 1 контракт с именем XBTUSD (bitcoin / usd) по цене 4009,9 с истечением времени 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 голосов
/ 14 марта 2019

с первого взгляда вы, похоже, забыли параметр api-expires среди заголовков.Метод, который работает для меня, состоит в том, что это тело является именованным списком (если вы используете пакет httr) с дополнительным параметром внутри вызова функции 'POST': encode = 'json'.

Если вы хотите увидеть, чтоошибки означают более подробно, выполните следующие действия:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...