R binance API Получить запрос аккаунта

Я пытался выполнить запрос Binance Get для получения информации об учетной записи из Binance API. Когда я запускаю свой код, я получаю HTTP/1.1 400 Bad Request с сервера.

Вот мой код:

timestamp <-as.character(jsonlite::fromJSON(content(GET("https://api.binance.com/api/v1/time"), "text"))$serverTime + 999)
recvWindow <- '1000000000000000000000000'

postmsg <- paste0("timestamp=", timestamp, "&recvWindow=", recvWindow)
signature <-openssl::sha256(postmsg, key="MY SECRET KEY")


url<-"https://api.binance.com/api/v3/account"


GET(
  url,
  add_headers("X-MBX-APIKEY" = "MY PUBLIC KEY"),
  query=list("timestamp"=timestamp, "recvWindow"=recvWindow, "signature"=signature),
  verbose()
)

Любая помощь будет любезно принята.

2 ответа

Первое, что я заметил, это то, что ваш recvWindow действительно большой. По состоянию на 09.15.2019 максимальное значение для recvWindow теперь составляет 60000, иначе выдается ошибка -1131 BAD_RECV_WINDOW. Binance теперь рекомендует recvWindow 5000 или меньше. Возможно, размер вашего recvWindow вызывал ошибку, когда вы задавали вопрос.

Во всяком случае, я нашел, что этот код работает для меня. Он возвращает информацию об учетной записи в виде списка, а баланс учетной записи - в виде фрейма данных.

      ##### Libraries #####
library(httr)
library(jsonlite)
library(digest)

##### URLS #####
timestamp_url <- "https://api.binance.com/api/v1/time"
account_url <-"https://api.binance.com/api/v3/account"

##### Keys #####
public_key <- "paste_your_public_key_here"
secret_key <- "paste_your_secret_key_here"

##### Parameters #####
recvWindow <- 5000 

##### Timestamp function #####
getTimestamp <- function(){
  
  return(as.character(fromJSON(content(x = GET(timestamp_url),
                                       type = "text",
                                       encoding = "ISO-8859-1"),
                               flatten = TRUE)$serverTime + 999))
}

##### Request #####

query <- list(recvWindow = recvWindow,
              timestamp = getTimestamp())

signature <- hmac(key = secret_key,
                  object = paste(names(query), query, sep = "=", collapse = "&"),
                  algo = "sha256")

get <- GET(account_url,
           add_headers("X-MBX-APIKEY" = public_key),
           query = c(query, signature = signature),
           verbose())

content <- content(x = get,
                   type = "text",
                   encoding = "ISO-8859-1")

AccountInfo <- fromJSON(content,
                        flatten = T)

AccountBalance <- AccountInfo$balances
      

У вас неправильная подпись и, может быть, вы забыли про "?" после учетной записи входные данные подписи для информации об учетной записи:

sha256("timestamp=yourTimestamp", key="YOUR SECRET KEY")

И вы можете попробовать URL без параметра 'recvWindow':

https://api.binance.com/api/v3/account?timestamp=timestamp&signature=signature
Другие вопросы по тегам