Я хочу реализовать протокол OAuth 1.0 для работы с COPY. Но когда я реализовал протокол OAuth на C++, чтобы получить токен запроса и отправил этот запрос, чтобы скопировать его возвращение, то подпись недопустима, и я не могу понять, что не так в моей подписи. Здесь все параметры, которые я генерировать по моей программе:Как правильно создать основную строку подписи oauth?
oauth_nonce=xoviybpokqnxdwlnkeoorawfijgezr
oauth_timestamp=1381745375
oauth_callback=http%3A%2F%2Fcopy-oauth.local%2Fget_access_token.php
oauth_signature_method=HMAC-SHA1
Это базовая строка, я использовал для того, чтобы генерировать маркер:
GET & HTTPS% 3A% 2F% 2Fapi.copy.com % 2Foauth% 2Frequest & oauth_consumer_key% 3D [мои 32 символов ключ]% 26oauth_nonce% 3Dxoviybpokqnxdwlnkeoorawfijgezr% 26oauth_signature_method% 3DHMAC-SHA1% 26oauth_timestamp% 3D1381745375% 26oauth_tokey% 3D
Это ключ для генерации подписи:
[Мой секрет потребителя 48 символов] &
Вот подпись, что я получил после того, как base64 и процент кодируются:
lNaaOaWyGtkJWj% 2BVLjLlKTVGYL0 % 3D
И последнее, что отправляет все параметры до сервера. Для этой цели я использую Libcurl:
char * abc="https://api.copy.com/oauth/request/?oauth_callback=http%3A%2F%2Fcopy-oauth.local%2Fget_access_token.php&oauth_consumer_key=[my 32 symbols key]&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1381745375&oauth_nonce=xoviybpokqnxdwlnkeoorawfijgezr&oauth_signature=lNaaOaWyGtkJWj%2BVLjLlKTVGYL0%3D";
CURL *curl;
CURLcode res;
curl_global_init(CURL_GLOBAL_DEFAULT);
curl = curl_easy_init();
if(curl)
{
curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, TRUE);
curl_easy_setopt(curl, CURLOPT_CAINFO, "C:\\a\\a\\a\\cacert.pem");
curl_easy_setopt(curl, CURLOPT_URL, abc);
res = curl_easy_perform(curl);
/* Check for errors */
if(res != CURLE_OK)
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
/* always cleanup */
curl_easy_cleanup(curl);
}
curl_global_cleanup();
Тогда моя консоль будет выводить:
oauth_error_message = oauth_problem% 3Dsignature_invalid% 26debug_sbs ...
Что случилось в моей реализации?
Ты, чувак! Благодаря! – 99miles