Импорт сообщений из Твиттера

При разработке сайта может понадобиться получить из Твиттера несколько последних постов (твитов). Это может быть как личная лента обычного пользователя, так и официальная лента компании.

Существует как минимум 2 способа решения данной задачи.

Способ 1:


UPD: Данный способ более не работает
Первый способ заключается в получении RSS файла с твиттами из ленты.

Первая трудность, которая может возникнуть не только в этом способе — это то, что работа возможна только с user_id, а не просто логином.

Информацию о пользователе по логину можно легко получить через XML.

$username = 'newpdv';
$user_info = simplexml_load_file('http://twitter.com/users/show.xml?screen_name='.$username);
$user_id = $user_info[0]->id;

Полученный XML файл хранит в себе всю информацию о пользователе.

Зная user_id без особого труда можно получить посты из ленты.

$timeline = simplexml_load_file('http://twitter.com/statuses/user_timeline/'.$user_id.'.rss');

И вывести последние посты.

$count = 3;
for($i=0; $i<$count; $i++){
	echo '<b>'.date('d.m.Y G:i',strtotime($timeline->channel->item[$i]->pubDate)).'</b></br>';
	echo $timeline->channel->item[$i]->title.'</br>';
	echo '<a href="'.$timeline->channel->item[$i]->link.'">Twitter</a></br></br>';
}


Способ 2:


Второй способ заключается в использовании API Twitter. Этот способ более сложный и требующий регистрации, но использование API предлагает гораздо более широкие возможности.

Первое что необходимо это зарегистрировать приложение Twittet на странице dev.twitter.com/apps/new
Нас требуют ввести название приложения, описание, сайт, где будет применяться, тип (в нашем случае Browser), режим доступа (в нашем случае достаточно Read-only) и при необходимости иконку.

После регистрации нам будут предоставлены ключи Consumer key и Consumer secret.

Чтобы облегчить себе работу мы будем использовать одну из готовых библиотек предлагаемых Twitter под названием TwitterOAuth, написанную Abraham Williams.
Другие библиотеки, в т.ч. для других языков программирования, можно найти на сайте dev.twitter.com/pages/libraries

Скачав библиотеку TwitterOAuth в файле config.php указываем полученные после регистрации приложения CONSUMER_KEY, CONSUMER_SECRET и OAUTH_CALLBACK.

Запустив библиотеку первый раз, нам потребуется разрешить ей доступ к твиттеру, кликнув по Sign in with Twitter, а на странице твиттера ответив на вопрос можно ли приложению получить доступ к вашей странице — Allow.

Теперь немного подредактируем index.php под нашу задачу.

[...]
$content = $connection->get('account/verify_credentials');

$count = 3;
$timeline = $connection->get('statuses/user_timeline', array('count' => $count, 'include_rts' => 1));
foreach ($timeline as $twitt)
{
	echo '<b>'.date('d.m.Y G:i',strtotime($twitt->created_at)).'</b></br>';
	echo $twitt->text.'</br>';
}

И получаем то, что нужно.

В дополнение


Как отметил dharrya, использование любого из способов в чистом виде может оказаться нерациональным. Следовало бы использовать кэширование твиттов любым доступным способом, будь то база данных или файловая система.

Заключение


В моей первой на хабре статье было рассмотрено два способа получения твиттов из ленты.
По времени выполнения оба варианта примерно одинаковы (можно увидеть на скринах).
Выбирать Вам. Если нужно просто получить список последних твитов, то первый способ гораздо короче и не требует особых действий, как со стороны разработчика, так и со стороны пользователя. Если же Ваши требования эти не ограничиваются, то огромные возможности API — это то, что нужно.
Поделиться публикацией
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 4

    +1
    Если нужно читать публичные сообщения (как это и делается в варианте 1) — то во втором варианте регистрировать приложение не обязательно.

    Можно точно так же дёрнуть api-метод «statuses/user_timeline» безо всякой авторизации и oauth

    Пример: api.twitter.com/1/statuses/user_timeline.xml?screen_name=zerkms
      0
      А, и по поводу выбранной библиотеки: крайне не рекомендую TwitterOAuth. Её единственное достоинство — что она была первой :-)

      В остальном же — это крайне кривой инструмент, ведущий себя очень непредсказуемо. Мучился с ним примерно год, после чего переехал на Zend_Services_Twitter. С тех пор проблемы исчезли как класс.
        0
        Спасибо, не заметил данного способа.
        Может допишу в статье
        0
        Версия 1 устарела и не работает, по xml без авторизации теперь получить ничего нельзя, используйте api.

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое