Как исправить неверный API-ключ, IP-адрес или разрешения на ошибку действия? - PullRequest
0 голосов
/ 22 января 2020

Это криптообменник API Binance. Я пытаюсь получить информацию об учетной записи, но я не смог этого сделать. Это официальный C ++ Api. Это ссылка на github . Это ошибка на терминале. Когда вы отвечаете на вопрос, пожалуйста, будьте спокойны. Я новичок ie

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: выполнено

2020-01-22 10:32:04 701234: выполнено

2020-01-22 10:32:04 701434: Готово.

2020-01-22 10:32:04 701472: Готово.

{"code": -2015, "msg": "Неверный ключ API, IP или разрешения на действие. " }

[2020/01/22 10: 32: 04: 7018] ВНИМАНИЕ: поддержка libuv не скомпилирована в

[2020/01/22 10: 32: 04: 7045 ] ВНИМАНИЕ: Создание Vhost 'по умолчанию' порт -1, 1 протоколы, IPv6 выключен

[2020/01/22 10: 32: 04: 7046] ВНИМАНИЕ: создан ssl-контекст клиента по умолчанию

[2020/01/22 10: 32: 04: 7099] УВЕДОМЛЕНИЕ: lws_client_connect_2: 0x239f3e0: адрес stream.binance.com

[2020/01/22 10: 32: 05: 3128] УВЕДОМЛЕНИЕ: lws_client_connect_2 : 0x239f3e0: адрес stream.binance.com

Здесь я ввел свои ключи.

 using namespace std;


#define API_KEY         "my api key here,deleted for security"
#define SECRET_KEY      "secret key is here, deleted for security"

и основная функция

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


}

и это является частью Бина CPP. 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;
}

1 Ответ

0 голосов
/ 23 февраля 2020

Я считаю, что это была ошибка, с которой я столкнулся в python. Если вы настроили свою учетную запись binance с binance.us вместо binance.com, вам необходимо убедиться, что вы изменили ее в файлах ресурсов. В python это было так же просто, как передать параметр 'tld = "us"' при инициализации клиентского класса.

Я видел, что у вас было "url = | https://api.binance .com / api / v1 / userDataStream |" Вам может понадобиться "url = | https://api.binance .us / api / v1 / userDataStream |"

Кроме того, я заметил, что ваш URL имел api / v1, Я просто хотел убедиться, что когда вы собираете информацию об учетной записи или другие запросы, требующие вашего ключа api_secret, он должен перевернуть api / v2 или api / v3.

Я не знаком с C ++, но вот решение для выполнить поиск / замену в python. Надеюсь, эта информация поможет вам!

Вам нужно будет перейти в каталог, в котором находятся файлы, загруженные с github, и попробовать следующее:

проверьте этот код, чтобы убедиться, что он не заменяет какой-либо. ком вам может понадобиться.

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...