मैं बिनेंस के एपीआई को एक GET अनुरोध भेजने की कोशिश कर रहा हूं, लेकिन मुझे नहीं पता कि कैसे करना है। यहाँ दस्तावेज़ीकरण पृष्ठ है: https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#account-information-user_data

मेरे पास एक निजी apiKey और secretKey है। मैं बिनेंस के लिए एक सामान्य अनुरोध कर सकता हूं, लेकिन मैं अपनी निजी कुंजी का उपयोग करके अपना निजी डेटा प्राप्त नहीं कर सकता।

पहली कोशिश: डाकिया में जीईटी अनुरोध के लिए मैं इस स्ट्रिंग का उपयोग करता हूं: https://api.binance.com/api/v3/account?timestamp =1499827319559&हस्ताक्षर=here_I_put_my_secret_key

और मैं एक header के रूप में पास होता हूं जैसा कि डैनी ने apiKey का सुझाव दिया था।

लेकिन मुझे मिलता है:

    {
    "code": -1021,
    "msg": "Timestamp for this request is outside of the recvWindow."
    }

धन्यवाद।

4
l000000l 10 अप्रैल 2020, 14:13
खैर, डॉक्स में recvWindow के लगभग 28 उल्लेख हैं, इसलिए यह शुरू करने के लिए एक अच्छी जगह है। "5000 या उससे कम के एक छोटे recvWindow का उपयोग करने की अनुशंसा की जाती है! अधिकतम 60,000 से अधिक नहीं जा सकता!"
 – 
Danny Dainton
10 अप्रैल 2020, 20:58
मुझे लगता है कि सिर्फ दस्तावेज पढ़ने से आपको यहां मदद मिलेगी - github.com/binance-exchange/binance-official-api-docs/blob/…
 – 
Danny Dainton
10 अप्रैल 2020, 21:04
आपकी प्रतिक्रिया के लिए धन्यवाद, मैं पहले से ही recvWindow = 3000 या 50000 सेट करने का प्रयास करता हूं लेकिन यह अभी भी त्रुटि उत्पन्न करता है ..
 – 
l000000l
10 अप्रैल 2020, 23:57
मैंने टाइमस्टैम्प मान बदलने की भी कोशिश की लेकिन कुछ भी नहीं बदल रहा है ..
 – 
l000000l
10 अप्रैल 2020, 23:58

4 जवाब

सबसे बढ़िया उत्तर

मैंने डाकिया में javascript का उपयोग करके समय को सही करते हुए इसे हल किया। एक और आसान समाधान ccxt लाइब्रेरी का उपयोग करना है: https://github.com/ccxt/ccxt< /ए>

3
l000000l 12 मई 2020, 13:01

यह वही हो सकता है जो आप दस्तावेज़ीकरण के अनुसार कर रहे हैं।

https://github.com/binance-exchange/binance-official-api-docs/blob/master/rest-api.md#endpoint-security-type

एपीआई-कुंजी को X-MBX-APIKEY हेडर के माध्यम से बाकी एपीआई में पास किया जाता है।

अपने अनुरोध में, इसे हेडर कुंजी के रूप में और अपनी API कुंजी को मान के रूप में जोड़ें।

1
Danny Dainton 10 अप्रैल 2020, 15:57
आपके उत्तर के लिए धन्यवाद। अब मैं अपनी प्रगति के साथ अपना प्रश्न अपडेट कर रहा हूं। मैं एपीआई का उपयोग कर शुरुआत कर रहा हूँ ...
 – 
l000000l
10 अप्रैल 2020, 19:27

Binance API के लिए आधिकारिक पोस्टमैन संग्रह यहाँ से प्राप्त करें:

https://github.com/binance/binance-api-postman

पोस्टमैन में वांछित संग्रह और वातावरण आयात करें, उदाहरण के लिए binance_spot_api_v1.postman_collection.json और binance_com_spot_api.postman_environment.json

अपनी 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)
0
Phierru 21 फरवरी 2021, 22:18

आप यह कोशिश कर सकते हैं। यह मेरे लिए काम कर रहा है। बस अपना API_KEY और SECRET बदलें

आपको https://api.binance.com/api/ से सर्वरटाइम टाइम पुनर्प्राप्त करने की आवश्यकता है v3/time और अनुरोध पर हस्ताक्षर करने के लिए उस सर्वर टाइम का उपयोग करने की आवश्यकता है।

GET : https://api.binance.com/api/v3/account?timestamp={{timestamp}}&signature={{signature}}

हैडर:

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;
            }
        }
    }
); 
0
Ketan Ramani 13 पद 2021, 10:47