первый шаг oauth 1.0 с Tumblr

Итак, я пытаюсь написать простой скрипт, который может аутентифицироваться с Tumblr с помощью OAUT. по причинам, выходящим за рамки этого вопроса, я не могу использовать какие-либо библиотеки, поэтому я должен сделать это самостоятельно. Кажется, я потерпел неудачу с самого первого шага этого. Это мой код до сих пор:

$requestTokenUrl    = "http://www.tumblr.com/oauth/request_token";
$authorizeUrl       = "http://www.tumblr.com/oauth/authorize";
$accessTokenUrl     = "http://www.tumblr.com/oauth/access_token";

$oauthCallbackUrl       = MY_URL;
$consumerKey            = MY_KEY;
$oauthTimestamp         = time();
$nonce                  = md5(mt_rand());
$oauthSignatureMethod   = "HMAC-SHA1";
$oauthVersion           = "1.0";

$sigBase = "POST&" . rawurlencode($requestTokenUrl) . "&". rawurlencode(
"oauth_callback=" . rawurlencode($oauthCallbackUrl)
. "oauth_consumer_key=" . rawurlencode($consumerKey)
. "&oauth_nonce=" . rawurlencode($nonce)
. "&oauth_signature_method=" . rawurlencode($oauthSignatureMethod)
. "&oauth_timestamp=" . $oauthTimestamp
. "&oauth_version=" . $oauthVersion
);

$sigKey = $consumerSecret . "&";

$oauthSig = base64_encode(hash_hmac("sha1", $sigBase, $sigKey, true));

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $requestTokenUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: OAuth oauth_consumer_key="' . $consumerKey . '",
oauth_timestamp="' . $oauthTimestamp . '",
oauth_nonce="' . $nonce . '",
oauth_callback="' . $oauthCallbackUrl . '",
oauth_signature_method="' . $oauthSignatureMethod . '",
oauth_version="' . $oauthVersion . '",
oauth_signature="' . $oauthSig . '"'
));

curl_setopt($ch, CURLOPT_POST, 1);

$output = curl_exec($ch);

Проблема в том, что я написал приведенный выше код, следуя инструкциям о oauth и twitter. Я попытался объединить некоторые из не очень хорошей документации Tumblr API. И теперь я получаю oauth 400 неправильный ответ на запрос, который я не могу как-то отладить. На самом деле ответ oauth таков:

HTTP/1.0 400 Bad request
Cache-Control: no-cache
Connection: close
Content-Type: text/html

<html><body><h1>400 Bad request</h1>
Your browser sent an invalid request.
</body></html>

и curl_getinfo показывает это:

'url' => string 'http://www.tumblr.com/oauth/request_token' (length=41)
'content_type' => string 'text/html' (length=9)
'http_code' => int 400
'header_size' => int 97
'request_size' => int 545
'filetime' => int -1
'ssl_verify_result' => int 0
'redirect_count' => int 0
'total_time' => float 0.377313
'namelookup_time' => float 0.028666
'connect_time' => float 0.198192
'pretransfer_time' => float 0.198388
'size_upload' => float 0
'size_download' => float 90
'speed_download' => float 238
'speed_upload' => float 0
'download_content_length' => float -1
'upload_content_length' => float -1
'starttransfer_time' => float 0.37721
'redirect_time' => float 0
'redirect_url' => string '' (length=0)
'primary_ip' => string '66.6.43.30' (length=10)
'certinfo' =>
array (size=0)
empty
'primary_port' => int 80
'local_ip' => string '192.168.1.70' (length=12)
'local_port' => int 52189

Есть ли способ узнать, что идет не так? Любая помощь будет оценена. Спасибо.

1

Решение

хорошо нашел проблему. в вариантах локон у меня было

curl_setopt($ch, CURLOPT_POST, 1);

но мне также нужно было добавить:

curl_setopt($ch, CURLOPT_POSTFIELDS, array());
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]