[英]Postman GET request to Binance API
我正在嘗試向 Binance 的 API 發送GET
請求,但我不知道該怎么做。 這是文檔頁面: https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#account-information-user_data
我有一個私人apiKey
和secretKey
。 我可以向 Binance 提出一般性請求,但我無法使用我的私鑰獲取我的私人數據。
第一次嘗試:對於 Postman 中的 GET 請求,我使用以下字符串: https://api.binance.com/api/v3/account?timestamp=1499827319559&signature= here_I_put_my_secret_key
我通過header
作為 Danny 建議的apiKey
。
但我得到:
{
"code": -1021,
"msg": "Timestamp for this request is outside of the recvWindow."
}
謝謝。
我在 Postman 中使用javascript
解決了這個校正時間問題。 另一個簡單的解決方法是使用ccxt
庫: https://github.com/ccxt/ccxt
根據文檔,這可能是您所追求的。
API 密鑰通過
X-MBX-APIKEY
header 傳遞到 Rest API。
在您的請求中,將其添加為 header 密鑰和您的 API 密鑰作為值。
從這里獲取 Binance API 的官方 Postman collections:
https://github.com/binance/binance-api-postman
在 Postman 中導入所需的集合和環境,例如binance_spot_api_v1.postman_collection.json和binance_com_spot_api.postman_environment.Z466DEEC76ECDF5FCA6D38571F623
將您的 API 密鑰添加到binance-api-key環境變量,並將您的密鑰添加到binance-api-secret變量。
注意:限制密鑰在 Binance 密鑰管理中的功能。 不要將此密鑰用於生產,僅用於測試。 為生產創建新密鑰。
對於已簽名的請求,計算預請求腳本中的簽名,然后設置簽名環境變量。
預請求腳本示例:
function resolveQueryString() {
const query = JSON.parse(JSON.stringify(pm.request.url.query))
const keyPairs = []
for (param of query) {
if (param.key === 'signature') continue
if (param.disabled) continue
if (param.value === null) continue
const value = param.value.includes('{{') ? pm.environment.get(param.key) : param.value
keyPairs.push(`${param.key}=${value}`)
}
return keyPairs.join('&')
}
const signature = CryptoJS.HmacSHA256(
resolveQueryString(),
pm.environment.get('binance-api-secret')
).toString(CryptoJS.enc.Hex)
pm.environment.set('signature', signature)
你可以試試這個。 這對我有用。 只需替換您的 API_KEY 和 SECRET
您需要從https://api.binance.com/api/v3/time檢索 serverTime 時間,並且需要使用該 serverTime 來簽署請求。
GET : https://api.binance.com/api/v3/account?timestamp={{timestamp}}&signature={{signature}}
Header:
Content-Type:application/json
X-MBX-APIKEY:YOUR_API_KEY
預請求腳本:
pm.sendRequest('https://api.binance.com/api/v3/time', function (err, res) {
console.log('Timestamp Response: '+res.json().serverTime);
pm.expect(err).to.not.be.ok;
var timestamp = res.json().serverTime;
postman.setEnvironmentVariable('timestamp',timestamp)
postman.setGlobalVariable('timestamp',timestamp)
let paramsObject = {};
const binance_api_secret = 'YOUR_API_SECRET';
const parameters = pm.request.url.query;
parameters.map((param) => {
if (param.key != 'signature' &&
param.key != 'timestamp' &&
!is_empty(param.value) &&
!is_disabled(param.disabled)) {
paramsObject[param.key] = param.value;
}
})
Object.assign(paramsObject, {'timestamp': timestamp});
if (binance_api_secret) {
const queryString = Object.keys(paramsObject).map((key) => {
return `${encodeURIComponent(key)}=${paramsObject[key]}`;
}).join('&');
console.log(queryString);
const signature = CryptoJS.HmacSHA256(queryString, binance_api_secret).toString();
pm.environment.set("signature", signature);
}
function is_disabled(str) {
return str == true;
}
function is_empty(str) {
if (typeof str == 'undefined' ||
!str ||
str.length === 0 ||
str === "" ||
!/[^\s]/.test(str) ||
/^\s*$/.test(str) ||
str.replace(/\s/g,"") === "")
{
return true;
}
else
{
return false;
}
}
}
);
我需要將我的 api-key 放入 header 但我不明白我是如何在 excel VBA 中做的,如果你能幫助我,我很感激
我所擁有的是這個,但 objHTTP.setRequestHeader 給我“找不到參數”
Sub Test19()
Dim strResult As String
Dim objHTTP As Object
Dim URL, key As String
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "https://fapi.binance.com/fapi/v1/openOrder?symbol=BTCBUSD×tamp=1643062898421&signature=__MYSIGNATURE__"
objHTTP.Open "GET", URL, False
'objHTTP.setRequestHeader "X-MBX-APIKEY: __MY_API_KEY"
objHTTP.send
objHTTP.waitForResponse
strResult = objHTTP.responseText
MsgBox strResult
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.