This is Binance cryptoexchange api. Im trying to get account informations but I could not do that. It's official C++ Api. This is github link. This is error on terminal. When you answering the question, Please be easy. I am newbie
2020-01-22 10:32:04 085219 :
2020-01-22 10:32:04 085245 : url = |https://api.binance.com/api/v1/userDataStream|
2020-01-22 10:32:04 085253 :
2020-01-22 10:32:04 698466 :
2020-01-22 10:32:04 698529 : done
2020-01-22 10:32:04 701234 : done
2020-01-22 10:32:04 701434 : Done.
2020-01-22 10:32:04 701472 : Done.
{ "code" : -2015, "msg" : "Invalid API-key, IP, or permissions for action." }
[2020/01/22 10:32:04:7018] NOTICE: libuv support not compiled in
[2020/01/22 10:32:04:7045] NOTICE: Creating Vhost 'default' port -1, 1 protocols, IPv6 off
[2020/01/22 10:32:04:7046] NOTICE: created client ssl context for default
[2020/01/22 10:32:04:7099] NOTICE: lws_client_connect_2: 0x239f3e0: address stream.binance.com
[2020/01/22 10:32:05:3128] NOTICE: lws_client_connect_2: 0x239f3e0: address stream.binance.com
Here i entered my keys.
using namespace std;
#define API_KEY "my api key here,deleted for security"
#define SECRET_KEY "secret key is here, deleted for security"
and main function
int main() {
Json::Value result;
long recvWindow = 10000;
string api_key = API_KEY;
string secret_key = SECRET_KEY;
BinaCPP::init( api_key , secret_key );
// User Balance
BinaCPP::get_account( recvWindow , result );
for ( int i = 0 ; i < result["balances"].size() ; i++ ) {
string symbol = result["balances"][i]["asset"].asString();
userBalance[symbol]["f"] = atof( result["balances"][i]["free"].asString().c_str() );
userBalance[symbol]["l"] = atof( result["balances"][i]["locked"].asString().c_str() );
}
print_userBalance();
// User data stream
BinaCPP::start_userDataStream(result );
cout << result << endl;
string ws_path = string("/ws/");
ws_path.append( result["listenKey"].asString() );
BinaCPP_websocket::init();
BinaCPP_websocket::connect_endpoint( ws_userStream_OnData , ws_path.c_str() );
BinaCPP_websocket::enter_event_loop();
}
and this is a part of BinaCPP.cpp
#include "binacpp.h"
#include "binacpp_logger.h"
#include "binacpp_utils.h"
string BinaCPP::api_key = "my api key here";
string BinaCPP::secret_key = "secret key here";
CURL* BinaCPP::curl = NULL;
//---------------------------------
void
BinaCPP::init( string &api_key, string &secret_key )
{
curl_global_init(CURL_GLOBAL_DEFAULT);
BinaCPP::curl = curl_easy_init();
BinaCPP::api_key = api_key;
BinaCPP::secret_key = secret_key;
}
I believe this was the error I was running across in python. If you set up your binance account with binance.us instead of binance.com you need to make sure that you change it in the scource files. In python it was as easy as passing the 'tld="us"' parameter when initializing the client class.
I saw that you had " url = |https://api.binance.com/api/v1/userDataStream|" You may need " url = |https://api.binance.us/api/v1/userDataStream|"
Also, I noticed that your url had api/v1, just wanted to make sure that when you are grabbing account information or other requests that require your api_secret key it should roll over api/v2 or api/v3.
I am not familiar with C++ but here is a solution to perform a find/replace in python. Hope this information helps you!
You will need to navigate to the directory your github-downloaded files are located and try the following:
import os
for root, dirs, files in os.walk(os.curdir):
for f in files:
file_name = os.path.join(root, f):
try:
with open(file_name, 'r') as fp:
data = fp.read().replace('.com', '.us')
with open(file_name, 'w') as fp:
fp.write(data)
except:
print(f.ljust(20), 'failed')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With