Стала задача написать приложение на стороне сервера (PHP), которое должно периодически отправлять сообщение в twitter ленту (скажем при появлении новости на сайте), а также отсылать Direct Message некоему пользователю при наступлении определенных событий.
Грубо говоря необходимо реализовать взаимодействие PHP с Twitter API
.
С недавних пор сервис twitter использует для авторизации вместо Basic Authentication более безопасный метод Open Authorization (OAuth).
Этот метод позволяет аутентифицировать пользователя не передавая непосредственно имя пользователя и пароль, а используя так называемые «токены» (tokens), что в свою очередь позволяет снять с разработчиков ответственность за хранение паролей пользователей.
Первое, что необходимо сделать – это зарегистрировать будущее приложение (если можно так выразиться) на странице Twitter для разработчиков – http://dev.twitter.com/apps/new
В предложенных полях необходимо заполнить информацию о приложении, включая описание, название, обратные ссылки и т.д.
Важными являются два пункта:
— Application Type (тип приложения). Нас интересует клиенский тип приложений (Client, пользователю будет выдан уникальный PIN-код, который необходимо будет ввести). Тип приложения Browser – соответствует веб-скриптам. Разница в том, что после авторизации приложения типа Browser идет автоматический редирект на URL скрипта.
— Default Access Type (тип доступа по умолчанию). Рекомендую выставить в Read & Write, чтобы позволить не только читать пользовательские данные, но и изменять их (отправлять сообщения к примеру).
Остальные параметры не критичны и заполнить их можете на свое усмотрение. Далее вводим проверочный код и попадаем на страницу настроек приложения, где получаем первые два ключа CONSUMER_KEY
и CONSUMER_SECRET
.
Далее необходимо скачать TwitterOAuth PHP библиотеку (автор Abraham Williams, на момент написания статьи последняя версия 0.2.0-beta3).
Затем необходимо внести некоторые изменения в код библиотеки, описанные в материале Twitter API: PIN-based OAuth Using PHP (автор Konstantin Kovshenin). Изменения направлены на то чтоб переделать веб-ориентированную аутентификацию (когда пользователь должен кликнуть на кнопку авторизации) на аутентификацию с PIN-кодом, предназначенную для пользовательских приложений.
Далее следуют ряд действий по регистрации необходимые для получения request_token, request_token_secret а затем и access_token, access_token_secret ключей.
Что, как и в какой последовательности делать очень хорошо расписано в данной статье: OAuth for PHP Twitter Apps, Part 1 (автор Raj Deut).
Не вижу смысла повторяться, статья на английском но изложена в доступной форме. Все описанные выше действия выполняются лишь один раз для конкретного аккаунта и, при следовании приведенным по ссылке выше инструкциям, не отнимут у вас много времени.
В заключение, вот как будет выглядеть скрипт отправки личного сообщения в twitter, а также отправки текста «hello world» в статус:
#twitter.php // Ключи CONSUMER_KEY и CONSUMER_SECRET полученные при регистрации приложения // на странице http://dev.twitter.com/apps/new $consumer_key = '***'; $consumer_secret = '***'; // Полученные токены/ключи, читаем из файла $accessToken = file_get_contents("access_token"); $accessTokenSecret = file_get_contents("access_token_secret"); // Создаем twitter API объект require_once("twitteroauth.php"); $oauth = new TwitterOAuth($consumer_key, $consumer_secret, $accessToken, $accessTokenSecret); // Отсылаем API запрос для проверки полномочий $credentials = $oauth->get("account/verify_credentials"); echo "Успешно подключены как пользователь @" . $credentials->screen_name; // Печатаем "hello world" в статус $oauth->post('statuses/update', array('status' => "hello world")); // Отправляем direct message (приватное сообщение) другому пользователю $send_str = 'Hi, friend! Test direct message'; $parameters = array('screen_name' => 'Sauron918', 'text' => $send_str); $method = 'direct_messages/new'; $oauth->post($method, $parameters);