0

libcurl を使用して C++ で作業していて、いくつかの API と対話するプログラムを作成していますが、ヘッダーに認証情報を追加する際に行き詰まっています。私は libcurl と API を初めて使用し、C++ の基本的な知識を持っています。認証には、API キーと HMAC_SHA256 でハッシュされた nonce が必要で、それぞれがヘッダーに配置されます。次に、非常に単純な JSON メッセージが送信されます。このサイトを検索してみましたが、ほとんどの例は JavaScript またはコマンド ラインにあるようで、関連する回答はありません。

POST メッセージをサーバーに送信すると、応答 402 - Invalid ApiKey が返されます。私の API キーは 100% 正しいので、書式設定またはヘッダーに含めた方法に関係があると思われます。サイトは BlinkTrade で、そのドキュメントはhereで、ヘッダー要件に関する情報が記載されています。

以下のコード スニペット:

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;

そして、curl_easy_setopt と curl_easy_perform のリターン コード 0 を取得します。APIキーの実際の文字を0のロードに置き換えましたが、それ以外はフォーマットなどの点ですべて同じです。実際にはハッシュ署名を使用していません。これを整理できたら使用します。エラー。コロンの後にスペースを追加し、文字列や値を二重引用符で囲んでみましたが、同じ応答が得られます。私のヘッダーがサーバーによって実際に認識されないということは、何が間違っているのでしょうか?

4

1 に答える 1