Я застрял с php4 (в частности, 4.3.9). Я хотел бы обновить свой статус в твиттере с помощью некоторого php-кода. Я получил потребительский ключ и секретный ключ потребителя и нашел хорошую библиотеку, которая теоретически позволяет мне использовать oauth с php4 [https://github.com/iamcal/lib_oauth].
Я могу сделать первое рукопожатие - я могу заставить твиттер ответить на звонок на https://api.twitter.com/oauth/request_token успешно:
Array
(
[url] => https://api.twitter.com/oauth/request_token
[content_type] => text/html; charset=utf-8
[http_code] => 200
[header_size] => 1086
[request_size] => 375
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.482927
[namelookup_time] => 0.022033
[connect_time] => 0.121786
[pretransfer_time] => 0.354956
[size_upload] => 0
[size_download] => 147
[speed_download] => 304
[speed_upload] => 0
[download_content_length] => 147
[upload_content_length] => 0
[starttransfer_time] => 0.482918
[redirect_time] => 0
)
cURL error number:0
cURL error:
Но когда я пытаюсь сделать следующий звонок, я получаю 401.
Любые предложения приветствуются; oauth, кажется, ломает мой мозг :(
== Обновление 9/5/11 => Вот мой код ==
<code>function oauth_http_request($url, $method="POST", $postdata=null){
echo("<br />=============");
echo("URL=");
echo("<br />");
print_r($url);
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); // Get around error 417
//curl_setopt($ch, CURLOPT_VERBOSE, true); // Display communication with server
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $GLOBALS['oauth_http_timeout']);
echo("<br />====");
echo("POST DATA:");
echo("<br />");
print_r($postdata);
if ($method == 'GET'){
# nothing special for GETs
} else if ($method == 'POST'){
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
} else{
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
}
$response = curl_exec($ch);
$headers = curl_getinfo($ch);
print "<pre>\n";
print_r(curl_getinfo($ch)); // get error info
echo "\n\ncURL error number:" .curl_errno($ch); // print error info
echo "\n\ncURL error:" . curl_error($ch);
print "
\ п ";
эхо ("
=============");
Эхо ( "HEADERS =");
эхо ("
");
print_r ($ заголовки);
// Не получаю ответ curl
эхо ("
=============");
эхо ( "РЕАКЦИЯ =");
эхо ("
");
print_r ($ ответ);
curl_close ($ ч);
$ GLOBALS ['oauth_last_request'] = массив (
'request' => array (
'url' => $ url,
'method' => $ method,
'postdata' => $ postdata,
),
'headers' => $ headers,
'body' => $ response,
);
#if ($ headers ['http_code']! = "200") {
#вернуть '';
#}
вернуть $ response;
}
И это возвращает:
=============URL=
https://api.twitter.com/oauth/access_token
====POST DATA:
oauth_version=1.0&oauth_nonce=e5b76ddf5e013fe85cd553dcc5120631&oauth_timestamp=1315259833&oauth_consumer_key=[REDACTED]&oauth_token=vUwvbMpeqGO99vlro4zujhN892wt6BNqE07vvbUYQ&oauth_signature_method=HMAC-SHA1&oauth_signature=Mvcekz1WZbCPwIl6whf7rZAr4nQ%3D
Array
(
[url] => https://api.twitter.com/oauth/access_token
[content_type] => text/html; charset=utf-8
[http_code] => 401
[header_size] => 1061
[request_size] => 424
[filetime] => -1
[ssl_verify_result] => 0
[redirect_count] => 0
[total_time] => 0.426447
[namelookup_time] => 3.4E-05
[connect_time] => 0.093783
[pretransfer_time] => 0.311701
[size_upload] => 0
[size_download] => 1
[speed_download] => 2
[speed_upload] => 0
[download_content_length] => 1
[upload_content_length] => 0
[starttransfer_time] => 0.426437
[redirect_time] => 0
)
cURL error number:0
cURL error: