Pull to refresh

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

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

Существует как минимум 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 — это то, что нужно.
Tags:
Hubs:
+2
Comments4

Articles