1

我一直在尝试运行 Binance Get 请求以从 Binance API 检索帐户信息。当我运行我的代码时,我从服务器收到一个 HTTP/1.1 400 错误请求。

这是我的代码:

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()
)

任何帮助都会被欣然接受。

4

2 回答 2

0

您的签名错误,可能是您忘记了“?” 在帐户之后,帐户信息的签名输入为:

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

您可以尝试不带“recvWindow”参数的 URL:

https://api.binance.com/api/v3/account?timestamp=timestamp&signature=signature
于 2018-08-30T21:22:28.413 回答
0

我注意到的第一件事是你的 recvWindow 真的很大。截至 2019 年 9 月 15 日,recvWindow 的最大值现在为 60000,否则将引发错误 -1131 BAD_RECV_WINDOW。Binance 现在推荐 5000 或更低的 recvWindow。当您提出问题时,您的 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
于 2021-12-08T06:19:01.567 回答