Больше года назад я писал об использовании возможностей R-пакетов twitteR и tm для анализа текста Twitter-сообщений. Такой анализ возможен благодаря тому, что Twitter предоставляет бесплатный доступ к своему API. Однако в последнее время схема, по которой предоставляется этот доступ, изменилась, став, к сожалению, гораздо сложнее (подробнее см. сообщение в официальном блоге сервиса). В основе нового подхода лежит авторизация по протоколу OAuth. Поскольку новая схема доступа к Twitter API отличается от той, которая была описана мною ранее, ниже я приведу пошаговую инструкцию доступа с учетом новых требований.
1. Регистрация пользователя на сайте для разработчиков приложений Twitter
Сайт для разработчиков Twitter-приложений находится по адресу https://dev.twitter.com. Если у вас уже имеется учетная запись для входа в Twitter, воспользуйтесь ею (см. рисунок ниже - Sign in). Иначе придется зарегистрироваться (опция Sign up станет доступной после перехода по ссылке Sign in).
2. Регистрация нового приложения
После входа в систему в верхнем правом углу страницы (возле иконки с вашей фотографией или какой-либо другой выбранной вами картинкой) станет доступным выпадающее меню, в котором необходимо выбрать My applications (Мои приложения):
На открывшейся после этого странице нажимаем на кнопку Create a new application (Создать новое приложение) и попадаем на другую страницу, где необходимо будет внести определенные данные касательно создаваемого нами нового приложения (см. рисунок ниже). В частности, требуется обязательно указать название приложения (Name), дать краткое описание приложения (Description) и указать адрес сайта, на котором это приложение планируется размещать (Website). Какой именно сайт вы укажете - не имеет значения. Главное, чтобы это был адрес реально существующего сайта.
Кроме того, необходимо будет согласиться с условиями предоставления доступа к API (поставить галочку возле Yes, I agree в разделе Developer Rules Of The Road), подтвердить, что вы - не робот (ввести значения с капчи) и, наконец, создать новое приложение, нажав на кнопку Create your Twitter application.
В результате откроется страница с параметрами созданного приложения. Наибольший интерес на этой странице для нас представляют т.н. "ключ" и "секрет" пользователя (Consumer key и Consumer secret), которые являются идентификаторами нового приложения. Эти идентификаторы стоит скопировать и сохранить в виде, например, текстового файле - они потребуются нам в дальнейшем:
3. Получение доступа к API из среды R
Для работы с текстами Twitter-сообщений вам, как минимум, потребуются пакеты twitteR, ROAuth и tm. Все их можно одновременно установить при помощи команды
install.packages(c("twitteR", "ROAuth", "tm"))
Загрузите все эти пакеты:
library(twitteR)
library(ROAuth)
library(tm)
Далее нам необходимо выполнить собственно подключение к серверам Twitter. При работе на компьютере с ОС Windows важным предварительным шагом является загрузка в рабочую среду R файла cacert.pem. Этот файл содержит набор сертификатов, которые используются для проверки подлинности сайта, с которым будет "общаться" ваш компьютер (т.е. сайт Twitter; подробнее о т.н. открытых ключах (public keys) см. здесь). При условии, что ваш компьютер подключен к сети Internet, загрузить этот файл можно при помощи следующей команды:
download.file(url = "http://curl.haxx.se/ca/cacert.pem", destfile = "cacert.pem")
Кроме того, в зависимости от свойств вашего Интернет-соединения (в частности, работаете ли вы через прокси или нет), может потребоваться дополнительная настройка свойств программы cURL (R-интерфейс для этой программы устанавливается незаметно для пользователя в виде пакета RCurl одновременно с установкой пакета ROAuth; подробнее о сURL см. здесь). Необходимые настройки задаются при помощи следующих команд:
curl = getCurlHandle()
options(RCurlOptions = list(capath = system.file("CurlSSL",
"cacert.pem", package = "RCurl"),
ssl.verifypeer = FALSE) )
curlSetOpt(.opts = list(proxy = "proxyserver:port"), curl = curl)
На предыдущем шаге были упомянуты "ключ" и "секрет пользователя". Для удобства их стоит сохранить в R виде двух самостоятельных символьных векторов (в приведенном ниже примере приведены вымышленные идентификаторы; вместо них необходимо вставить ваши собственные значения!):
consumerKey <- "12345pqrst6789ABCD"
consumerSecret <- "abcd1234EFGH5678ijkl0987MNOP6543qrst21"
Используя эти идентификаторы, мы можем, наконец, связаться с Twitter следующим образом:
reqURL <- "https://api.twitter.com/oauth/request_token"
accessURL <- "https://api.twitter.com/oauth/access_token"
authURL <- "https://api.twitter.com/oauth/authorize"
twitCred <- OAuthFactory$new(consumerKey=consumerKey,
consumerSecret=consumerSecret,
requestURL=reqURL,
accessURL=accessURL,
authURL=authURL)
twitCred$handshake()
В результате выполнения этой команды в консоли R появится сообщение вроде этого:
accessURL <- "https://api.twitter.com/oauth/access_token"
authURL <- "https://api.twitter.com/oauth/authorize"
twitCred <- OAuthFactory$new(consumerKey=consumerKey,
consumerSecret=consumerSecret,
requestURL=reqURL,
accessURL=accessURL,
authURL=authURL)
twitCred$handshake()
В результате выполнения этой команды в консоли R появится сообщение вроде этого:
To enable the connection, please direct your web browser to:
http://api.twitter.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXXX
when complete, record the PIN given to you and provide it here:
Здесь нас просят направить браузер по указанному адресу. К сожалению, этот адрес невозможно скопировать из консоли - придется ввести его в браузере целиком "вручную" (обратите внимание: символы XXXXXXXXXXXXXXXX в приведенном примере будут выглядеть на вашем компьютере иначе!). В результате вы попадете на страницу, где необходимо будет авторизовать ваше Twitter-приложение и далее получить PIN для доступа к API:
Полученный вами PIN код (он, конечно, будет отличаться от приведенного в примере выше) необходимо скопировать и вставить в консоль R после фразы
when complete, record the PIN given to you and provide it here:
и нажать клавишу "Ввод" на клавиатуре.
Для проверки того, что соединение было установлено успешно, можно выполнить команду registerTwitterOAuth(twitCred) - она должна вернуть значение TRUE.
Для проверки того, что соединение было установлено успешно, можно выполнить команду registerTwitterOAuth(twitCred) - она должна вернуть значение TRUE.
После этого можно приступать к сбору Twitter-сообщений так, как это было описано ранее.
getTwitterOAuth(consumerKey, consumerSecret)
To enable the connection, please direct your web browser to:
http://api.twitter.com/oauth/authorize?oauth_token=Imm84YZGGvoPPZKNapiKGSdwtPMQx41sxv9CuUiHgNM
When complete, record the PIN given to you and provide it here: 3159613
Ошибка: Forbidden
Дайте знать, сработало ли это на Вашем компьютере.
Отправить комментарий