1

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

どんな助けでも親切に受け入れられます。

4

2 に答える 2

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 に答える