Binance API Keys

前端 未结 6 1538
名媛妹妹
名媛妹妹 2021-02-16 00:20

I have set up a read-only API key on Binance to access account information like currency balances but I can\'t see the JSON data. The string query I put into the URL returns th

相关标签:
6条回答
  • 2021-02-16 00:28

    curl -H "X-MBX-APIKEY:your_api_key" -X POST https://api.binance.com/api/v1/userDataStream

    0 讨论(0)
  • 2021-02-16 00:39

    You should set the API key in the request header, not as a parameter in the request url. Please provide more information on your request procedure (language, etc.).

    0 讨论(0)
  • 2021-02-16 00:40

    Binance's websocket API kinda tricky to use. Also there is no way to use a secret key.

    Common usage

    1. Send HTTP POST request with your secret API key as a X-MBX-APIKEY header to https://api.binance.com/api/v1/userDataStream
    2. You will get listen key which should be used for websocket connection. It will be available 1 hour.

      {"listenKey": "your listen key here"}

    3. Use it when connecting to Binance's websocket

    wss://stream.binance.com:9443/ws/{your listen key here}

    Python example

    import ssl
    from websocket import create_connection
    
    import requests
    
    KEY = 'your-secret-key'
    url = 'https://api.binance.com/api/v1/userDataStream'
    listen_key = requests.post(url, headers={'X-MBX-APIKEY': KEY})['listenKey']
    connection = create_connection('wss://stream.binance.com:9443/ws/{}'.format(KEY), 
                                   sslopt={'cert_reqs': ssl.CERT_NONE})
    
    0 讨论(0)
  • 2021-02-16 00:42

    You put it in the header. Following is tested working PHP example borrowed from jaggedsoft binance PHP library, it's a signed request that will return the account status.

    $api_key = "cool_key";
    $secret = "awesome_secret";
    
    $opt = [
        "http" => [
            "method" => "GET",
            "header" => "User-Agent: Mozilla/4.0 (compatible; PHP Binance API)\r\nX-MBX-APIKEY: {$api_key}\r\n"
        ]
    ];
    $context = stream_context_create($opt);
    $params['timestamp'] = number_format(microtime(true)*1000,0,'.','');
    $query = http_build_query($params, '', '&');
    $signature = hash_hmac('sha256', $query, $secret);
    $endpoint = "https://api.binance.com/wapi/v3/accountStatus.html?{$query}&signature={$signature}";
    
    $res = json_decode(file_get_contents($endpoint, false, $context), true);
    
    0 讨论(0)
  • 2021-02-16 00:48

    X-MBX-APIKEY should be set as a field in the HTTP header, and not as a HTTP parameter. See this page for more information on HTTP header fields. However, I tried the same with Excel and could not get it running until now.

    Another open question is how to use the secret key.

    0 讨论(0)
  • 2021-02-16 00:51

    This worked for me:

    base_url="https://api.binance.com"
    account_info="/api/v3/account"
    
    url="${base_url}${account_info}"
    
    apikey="your_apikey"
    secret="your_secret"
    
    queryString="timestamp=$(date +%s)" #$(python3 binance_time.py) must sync
    requestBody=""
    
    signature="$(echo -n "${queryString}${requestBody}" | openssl dgst -sha256 -hmac $secret)"
    signature="$(echo $signature | cut -f2 -d" ")"
    
    req=$(curl -H "X-MBX-APIKEY: $apikey" -X GET "$url?$queryString&signature=$signature")
    echo $req
    
    0 讨论(0)
提交回复
热议问题