А вы готовы к приходу twitter? Обзор api.

Twitte_Icon_smallСоциальные сети всегда нравились людям. Ведь очень интересно общаться с друзьями и одноклассниками не выходя из дома. Некоторым это нравится, некоторые презирают их, некоторые используют для своего бизнеса. Но никто не остался равнодушен к ним. Мало кто из «постоянно проживающих» в сети хоть раз не заглянул в какую-нибудь соц.сеть.
Последнее время все больше набирает популярность такая сеть как Twitter. Хоть она имеет только англоязычный интерфейс, русские пользователи все больше и больше интересуются этим сервисом. Сегодня рассмотрим основы api для работы с твиттером.

История
Где-то годах эдак в 2006-2007 в светлых головах Джека Дорси (Jack Dorsey), Биза Стоуна (Biz Stone) и Эвана Вильямса (Evan Williams) появилась идея создать что-то типа личного статусника, в который можно было записывать свой текущий статус или текущее состояние. Чуть позже это трансформировалось в то, что мы можем наблюдать сейчас: микроблоггинг, в котором можно писать обо всем и про все.

Ограничение в 140 символов для твитта было придумано только из-за уведомлений по SMS.

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

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

Авторизация
Начать обзор стоит с системы авторизации. До последнего времени использовалась HTTP-аутентификация (Basic Authentication), что делало авторизацию достаточно простой и удобной. Но последнее время начали вводить систему OAuth, что увеличивает безопасность, но создает новые трудности в реализации.

Пока что разработчики твиттера не собираются убирать HTTP-аутентификацию, поэтому в примерах этого обзора мы будем использовать именно этот вид авторизации. Но стоит отметить, что вскоре возможно придется переписывать все примеры с использованием OAuth .
Внимание! HTTP-аутентификация больше не работает. Теперь можно авторизоваться только через oAuth, про который вы можете почитать в этой статье

Функции
Для того чтобы получить, какую-либо информацию у твиттера, нужно обратиться к определенному урлу и отослать данные в HTTP-запросе по методу GET или POST (иногда DELETE). Поэтому стоит написать несколько функций, которые отправят соответствующий запрос куда нужно и вернут результат.
Для отправки запроса по методу GET можно набросать такую функцию:

1
2
3
4
5
6
7
8
9
10
11
function get_url($url, $user = 'vasya', $pass = 'pupkin'){
$res = @curl_init($url);
//заголовки нам не нужны
curl_setopt($res,CURLOPT_HEADER,0);
curl_setopt($res, CURLOPT_RETURNTRANSFER, 1);
//аутентификация: некоторые запросы не требуют аутентификации,
//но нам это не помешает
curl_setopt($res, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($res, CURLOPT_USERPWD, "$user:$pass");
return curl_exec($res);
}

В функцию мы передаем URL, имя пользователя и пароль.
Для работы этой и других функций нам обязательно понадобится php-расширение php_curl.

Для отправки пост-запроса напишем другую функцию

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function post_url($url, $postdata=array(),$user = 'vasya',
$pass = 'pupkin'){
$res = @curl_init($url);
//и здесь заголовки нам не нужны
curl_setopt($res,CURLOPT_HEADER,0);
curl_setopt($res, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($res, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($res, CURLOPT_USERPWD, "$user:$pass");
curl_setopt($res, CURLOPT_POST,1);
$pFields = '';
foreach($postdata as $key=>$value){
$pFields.=urlencode($key)."=".urlencode($value)."&";
}
curl_setopt($res, CURLOPT_POSTFIELDS,$pFields);
return curl_exec($res);
}

Эта функция немного отличается от предыдущей. Здесь после URL, нужно передать массив с пост-переменными, после чего логин и пароль.
Ну и последняя функция, которая нам понадобится, это функция для отсылки запроса DELETE

1
2
3
4
5
6
7
8
9
10
function delete_url($url,$user = 'vasya', $pass = 'pupkin'){
$res = @curl_init($url);
//и здесь заголовки нам не нужны
curl_setopt($res,CURLOPT_HEADER,0);
curl_setopt($res, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($res, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($res, CURLOPT_USERPWD, "$user:$pass");
curl_setopt($res, CURLOPT_CUSTOMREQUEST,'DELETE');
return curl_exec($res);
}

Теперь работать будет достаточно просто:

1
echo get_url(“http://какой-то урл”);

Таймлайн
Таймлайн – это список твитов которые отображаются у пользователя на home-страничке твиттера. Чтобы получить этот список нужно отослать GET-запрос по адресу
http://api.twitter.com/1/statuses/home_timeline.format
где format может быть xml, json, atom. При подстановке соответствующего format сервер вернет данные в соответствующем формате.
В качестве параметров можно передать такие данные:

  • count – количество получаемых сообщений;
  • page – страница
1
2
3
4
//таймлайн пользователя
echo get_url(
'http://api.twitter.com/1/statuses/home_timeline.xml?'.
'count=5&page=1');

В ответ получим xml-файл, в котором можно найти все данные, о моем таймлайне. Авторизация в этом случае обязательна.

Последние твитты
Получить последние твитты пользователя можно обратившись с GET-запросом по адресу
http://twitter.com/statuses/user_timeline.format
В качестве format может быть xml, json, rss, atom.
Параметров всего 7, но реально понадобятся толькло 3:

  • id – идентификатор пользователя, чьи твитты будем читать;
  • count – кол-во запрашиваемых твиттов (не более 200);
  • page – страница с твиттами по порядку
1
2
3
4
// последние 5 моих твиттов в формате xml
echo get_url(
'http://twitter.com/statuses/user_timeline.xml?'.
'id=webjuniornet&count=5&page=1');

Авторизация нужна только, если вы хотите получить твитты закрытого пользователя.

Обращения
Кто к вам обращался (посредством указания @ перед именем) можно посмотреть по этому адресу
http://twitter.com/statuses/mentions.format
Формат может быть xml, json, rss и atom. Аутентификация обязательна.
Параметры count и page в GET-запросе указывают на количество отображаемых твиттов и текущую страницу.
Код

1
2
3
//обращения
echo get_url("http://twitter.com/statuses".
"/mentions.xml?count=5&page=1");

выведет последние 5 обращений к вам, а также информацию о пользователях, которые обращались к вам.

Direct Messages
Список полученных смотрим по адресу
http://twitter.com/direct_messages.format
из форматов работают xml, rss,json и atom.
Список отправленных можно увидеть по адресу
http://twitter.com/direct_messages/sent.format
в этом случае из форматов доступны только xml и json, а rss и atom не доступны, хотя в документации написано, что этот метод поддерживает все четыре формата.
Отправка Direct Message (DS) происходит с помощью отсылки POST-запроса по адресу
http://twitter.com/direct_messages/new.format
формат может быть xml и json.
Параметры:

  • user – имя пользователя, которому отсылаем DS;
  • text – текст, который отправляем, не более 140 символов.

Вот здесь и понадобится ранее написанная функция для отправки POST-запроса.
Отправим пользователю bla2test привет:

1
2
3
4
5
6
7
//ds new
echo post_url('http://twitter.com/direct_messages/new.xml',
array(
'user'=>'bla2test',
'text'=>'Это тестовое сообщение. Если оно не дойдет, то я в чем-то ошибся.'
)
);

Если все в порядке, то в ответ придет xml-файл с отправленным сообщением. Если произошла ошибка, то сервер ответит 403-й ошибкой.

Удалить сообщение можно, отослав POST или DELETE запрос на адрес

http://twitter.com/direct_messages/destroy/id.format

id – это идентификатор сообщения (его можно посмотреть в списке полученных или отправленных сообщений), а format может быть xml или json.
А здесь нам понадобится функция delete_url, которую мы написали ранее.
Код

1
2
3
//delete ds
echo delete_url("http://twitter.com/direct_messages/".
"destroy/784835428.xml");

удалит сообщение с идентификатором 784835428. Авторизация обязательна.

Друзья
Друзья – это те, чью таймлайн вы читаете. Идентификаторы всех друзей можно получить по адресу
http://twitter.com/friends/ids.format
Формат может быть xml или json. Авторизация нужна только если вы смотрите друзей закрытого пользователя.
Параметры:

  • id – имя пользователя, чьих друзей будем смотреть;

Код

1
2
3
//ids of frends
echo get_url('http://twitter.com/friends'.
'/ids.xml?id=webjuniornet');

Выведет всех друзей.

Фоловеры
Фоловеры – это те, кто читает вашу таймлайн. Идентификаторы всех фоловеров можно получить по адресу
http://twitter.com/followers/ids.format
Формат может быть xml или json.
Параметры:

  • id – имя пользователя, чьих фоловеров будем смотреть;

Код

1
2
3
//ids followers
echo get_url('http://twitter.com/followers'.
'/ids.xml?id=webjuniornet');

Выведет всех фоловеров. Авторизация требуется только если вы смотрите друзей закрытого пользователя.

Зафоловить пользователя
Для того, чтобы программно подружиться с каким-либо пользователем, нужно отослать POST-запрос по адресу
http://twitter.com/friendships/create/id.format
Формат может быть xml или json. Авторизация обязательна.
Параметры:

  • id – имя пользователя
  • user_idидентификатор пользователя;
  • screen_name – отображаемое имя;
  • follow – установить в true, если нужно зафоловить пользователя.

Код

1
2
3
4
5
6
7
8
9
//follow user
echo post_url('http://twitter.com/friendships/create/id.xml',
array(
'id'=>'bla2test',
'user_id'=>'109344899',
'screen_name'=>'bla2test',
'follow'=>'true'
)
);

зафоловит пользователя bla2test, если он уже зафоловен, то сервер пришлет 403-ю ошибку.

Сам по себе api твиттера не очень сложный. Обращаемся к адресу, отправляем данные и получаем ответ. Поэтому интеграция различной функциональности твиттера в какое-либо приложение не должно доставить особых хлопот

Популярность: 12%


Интересное из других блогов:

2leep.com

И не забывайте комментировать статью.

Добавляйся в группу во вконтакте, чтобы самым первым узнавать все новости сайта

Отзывов: 7 на «А вы готовы к приходу twitter? Обзор api.»

  1. Автор: BOLVERIN, 3 февраля 2010 в 15:50

    использует Opera 10.10 Opera 10.10 на Windows XP Windows XP

    О как полезно. Будем юзать! :) хочу плагин себе для блога нормальный наваять с использование API bit.ly и Твиттера. ну и кроме этого задумок много

  2. Автор: pr0st04el, 28 мая 2010 в 18:09

    использует Safari 3.1.1 Safari 3.1.1 на Windows XP Windows XP

    Hi
    А со списками (lists) пользователей можно через API работать? Например, выводить в формате rss 20-40 имен пользователей с указанием имен их списков и количеством твиплов в каждом списке?
    TNX

  3. Автор: web-junior, 30 мая 2010 в 11:37

    использует Firefox 3.5.9 Firefox 3.5.9 на Windows XP Windows XP

    Добрый день!
    В документации API есть методы для работы с листами. Смотрите разделы List Methods, List Members Methods, List Subscribers Methods

  4. Автор: Сварог, 2 ноября 2010 в 12:53

    использует Google Chrome 6.0.472.63 Google Chrome 6.0.472.63 на Windows XP Windows XP

    Вот и настал тот час, когда Твиттер отменил http-basic аутентификацию и интеграция на моём http://www.geniyz.ru упала =(
    как организовать OAuth – несоображаю =( помогите разобраться!
    Очень жду обзора с доступным изложением принципов OAuth.

    • Автор: web-junior, 5 ноября 2010 в 21:09

      использует Firefox 3.6.10 Firefox 3.6.10 на Windows 7 Windows 7

      Статья с разбором oAuth в твиттере обязательно будет. Но немного позже.

  5. Автор: EvgenyZhlobo, 5 ноября 2010 в 19:00

    использует Opera 10.70 Opera 10.70 на Windows XP Windows XP

    “Basic authentication is not supported”
    Когда пытаюсь вывести Таймлайн.
    Как исправить?

    • Автор: web-junior, 5 ноября 2010 в 21:14

      использует Firefox 3.6.10 Firefox 3.6.10 на Windows 7 Windows 7

      31 августа 2010 года в твиттере отказались от HTTP-аутентификации. Теперь поддерживается аутентификация только по протоколу oAuth. Статья об этом будет чуть позже.

RSS-лента комментариев. Адрес для трекбека

Ваш отзыв

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

Нажимая на кнопку "Добавить" вы принимаете правила комментирования