Обновление статуса отправки Twitter OAuth не работает

Почему этот код не работает? Мне нужно, чтобы получить последние твиты для собаки тега поиска, а затем отправить обновление статуса с ответом пользователю, который отправил твит с собакой тега поиска. Я использую twitteroauth Авраама, найденный здесь: https://github.com/abraham/twitteroauth/downloads

   <?php
require_once('twitteroauth.php');

define('CONSUMER_KEY', 'CONSUMERKEYHERE');
define('CONSUMER_SECRET', 'SECRET HERE');
define('ACCESS_TOKEN', 'TOKENHERE');
define('ACCESS_TOKEN_SECRET', 'TOKENSECRETHERE');

$twitter = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$twitter->host = "http://search.twitter.com/";
$search = $twitter->get('search', array('q' => 'dog', 'rpp' => 5));

$twitter->host = "https://api.twitter.com/1/";
foreach($search->results as $tweet) {
    $status = '@$tweet->from_user Here my reply would go';
    $twitter->post('statuses/update', array('status' => $status));
}
?>

Я ввел свой потребительский ключ, секрет и токены, но удалил их здесь.

Спасибо!


person GoneInsane    schedule 05.08.2011    source источник
comment
Извините, что я здесь наполовину бесполезен, так как я некоторое время не работал с TwitterOAuth, но IIRC, если вы распечатаете переменную $twitter, у нее должно быть поле, в котором сообщается о последней ошибке, полученной от twitter.com   -  person bcoughlan    schedule 06.08.2011
comment
Это дает мне ошибку: объект класса TwitterOAuth не может быть преобразован в строку   -  person GoneInsane    schedule 06.08.2011
comment
Это дает мне ошибки и показывает время ожидания соединения с api.twitter.com/1 Это: объект( TwitterOAuth)#1 (13) { [http_code]=› NULL [url]=› NULL [host]=› string(26) api.twitter.com/1 [timeout]=› int(30) [connecttimeout]=› int(30) [ssl_verifypeer]=› bool(false) [format]=› string(4 ) json [decode_json]=› bool(true) [http_info]=› NULL [useragent]=› string(25) TwitterOAuth v0.2.0-beta2 [sha1_method]=› object(OAuthSignatureMethod_HMAC_SHA1)#2 (0) { } [consumer ]=› объект(OAuthConsumer)#3 (3) { [ключ]=› строка(22)   -  person GoneInsane    schedule 06.08.2011
comment
И затем он показывает все потребительские ключи и т.д.   -  person GoneInsane    schedule 06.08.2011
comment
Установите $response = $twitter->post(...);, а затем var_dump($response); Это напечатает любую ошибку, возвращенную из Twitter. Если вы получаете проверку тайм-аута соединения, вы действительно можете подключиться к api.twitter.com, и брандмауэр не блокирует соединения.   -  person abraham    schedule 06.08.2011
comment
он говорит мне, что он только для чтения, но это не так..   -  person GoneInsane    schedule 06.08.2011
comment
Я исправил это :3 Присяга была только для чтения, поэтому воссоздал токен доступа.   -  person GoneInsane    schedule 06.08.2011
comment
Теперь получаю эту ошибку: Не удалось пройти аутентификацию с помощью OAuth.   -  person GoneInsane    schedule 06.08.2011
comment
Исправлено это сейчас, но теперь я получаю это, возвращаемое из var_dump: NULL NULL NULL NULL NULL   -  person GoneInsane    schedule 06.08.2011
comment
@abraham (следовательно, количество раз, когда он говорит NULL, равно 5, и я пытаюсь отправить 5 твитов).   -  person GoneInsane    schedule 06.08.2011
comment
Попробуйте установить $twitter->decode_json = FALSE; после того, как вы вернете хост на api.twitter.com. Я думаю, что, возможно, Твиттер возвращает ответ не в формате JSON, который невозможно проанализировать. Также обновите код выше, указав текущее состояние, которое вы используете.   -  person abraham    schedule 07.08.2011
comment
Теперь var_dump($response); ничего не возвращает, но твиты не публикуются.   -  person GoneInsane    schedule 07.08.2011


Ответы (1)


API поиска Twitter отделен от REST API и не требует аутентификация. Поэтому использование OAuth, вероятно, не сработает.

person Chris Carson    schedule 05.08.2011
comment
Он возвращает результаты поиска в порядке, так что это работает, поскольку я могу повторить их. Единственное, что не работает, это публикация обновления статуса. - person GoneInsane; 06.08.2011