php Как сделать правильный твиттер api curl с oauth - PullRequest
6 голосов
/ 06 июня 2011

Я хочу использовать php curl с oauth, чтобы получить данные JSON из twitter.Вот мой кодвернуть сообщение об ошибке "error":"Timestamp out of bounds".

Я хочу знать, как сделать правильный твиттер api curl с oauth?

  1. Что такое oauth_consumer_key, oauth_token, oauth_nonce, oauth_signature?я прав?

  2. как решить "error":"Timestamp out of bounds"?

  3. как насчет моего curl_setopt метода?

Во многих отношениях я хотел бы использовать это php curl для декодирования других API Twitter (измененный URL).Большое спасибо.

$callback="<callback url>";
$consumer_key="<Consumer key>";
$consumer_secret="<Consumer secret>";
$oauth_token="<Access Token (oauth_token)>";
$oauth_signature="<Access Token Secret (oauth_token_secret)>";//these key word in my api panel
$time = mktime(date("Y-m-d H:i:s"))-86400;
$url = "https://api.twitter.com/1/friends/ids.json?";
$url .= "user_id=<user id>";
$url .= "&realm=".urlencode($callback)."";
$url .= "&service_provider_id=11";
$url .= "&oauth_consumer_key=".$consumer_key."";
$url .= "&oauth_token=".$oauth_token."";
$url .= "&oauth_nonce=".$consumer_secret."";
$url .= "&oauth_signature_method=HMAC-SHA1";
$url .= "&oauth_timestamp=".$time."";
$url .= "&oauth_version=1.0";
$url .= "&oauth_signature=".$oauth_signature."";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: api.twitter.com'));
$json = curl_exec($ch);
curl_close ($ch);
$data = json_decode($json, true);
print_r($json);

Ответы [ 2 ]

3 голосов
/ 06 июня 2011

Вы используете mktime неправильно, она не принимает строку даты. Однако вместо этого я бы порекомендовал вам сделать ...

$time = time() - 86400;

Что касается других ваших вопросов, я рекомендую приобрести библиотеку Twitter с поддержкой oauth для PHP. Там много всего, и нет смысла изобретать велосипед ... обычно:)

https://dev.twitter.com/docs/auth/oauth/single-user-with-examples

1 голос
/ 06 июля 2011

Также проверьте, правильно ли установлены время и дата на вашем сервере.Твиттер выдаст ошибку «вне границ», если ваша временная метка будет отключена более чем на ~ 24 часа.

Руководство по установке даты / времени в linux - http://www.cyberciti.biz/faq/howto-set-date-time-from-linux-command-prompt/

...