Я работаю на С++ с libcurl, пишу программу для взаимодействия с некоторыми API, и я застрял, когда дело доходит до добавления информации об аутентификации в заголовки. Я новичок в libcurl и API с базовыми знаниями C++. Для аутентификации требуется ключ API и одноразовый номер, хэшированный с помощью HMAC_SHA256, каждый из которых затем помещается в заголовки. Затем отправляется очень простое сообщение JSON. Я пробовал искать на этом сайте, но большинство примеров, похоже, находятся в javascript или командной строке, и я не вижу в них подходящих ответов.
Когда я отправляю сообщение POST на сервер, я получаю ответ 402 — Invalid ApiKey. Мой ключ API на 100% правильный, поэтому я подозреваю, что это как-то связано с форматированием или тем, как я включил его в заголовок. Это сайт BlinkTrade, и их документация находится здесь, что дает некоторую информацию о заголовке. требования.
Фрагмент кода ниже:
char* message="{\"MsgType\": \"U2\",\"BalanceReqID\": 1}";
curl_easy_setopt(curl, CURLOPT_URL, "https://api.blinktrade.com/tapi/v1/message");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, pFile2);
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, message);
struct curl_slist *header = NULL;
header = curl_slist_append(header, "APIKey:0000000000000000000000000000000000000000");
header = curl_slist_append(header, "Nonce:1");
header = curl_slist_append(header, "Signature:1");
header = curl_slist_append(header, "Content-Type:application/json");
transfer = curl_easy_setopt(curl, CURLOPT_HTTPHEADER, header);
cout << transfer << endl;
transfer = curl_easy_perform(curl);
cout << transfer << endl;
И я получаю код возврата 0 для curl_easy_setopt и curl_easy_perform. Я заменил фактические символы из ключа API на загрузку 0, но в остальном все то же самое с точки зрения форматирования и т. д. На самом деле я не использовал хешированную подпись, я сделаю это после того, как разберусь с этим ошибка. Я пробовал добавлять пробел после двоеточия и заключать строку и/или значение в двойные кавычки, но получаю тот же ответ. Что я делаю неправильно, что означает, что мои заголовки на самом деле не распознаются сервером?
HMAC-SHA256
что-то. Это тоже просто образец или реальная стоимость? - person Artemy Vysotsky   schedule 16.09.2017