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