Статьи

Java Twitter Интеграция

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

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

Первый шаг в использовании API Twitter, либо напрямую, либо через стороннюю платформу, — это регистрация приложения . Этот шаг должен гарантировать, что только известные потребители потенциально могут получить доступ к Twitter. Важным параметром нашего приложения является его тип: клиент или браузер. В последнем случае вам нужно будет указать URL-адрес обратного вызова, по которому пользователи будут перенаправлены после успешной аутентификации. Обратите внимание, что если ваше приложение не доступно через Интернет или не опубликовано(как для приложения localhost), обязательно проверяйте клиента. Процесс будет совершенно другим в том смысле, что пользователи не будут перенаправлены, а вернут PIN-код, который необходимо будет ввести для получения окончательного разрешения. В любом случае, создание приложения даст нам две важные части данных: ключ потребителя и секрет потребителя, которые подтверждают, что мы зарегистрированы.

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

  1. Попросите в Твиттере токен запроса , содержащий и ключ, и секретный ключ
  2. Храните ответ где-нибудь
  3. Извлеките URL аутентификации из ответа
  4. Перенаправьте пользователя на URL аутентификации, чтобы он мог войти
  5. Это делается вне приложения: пользователь входит в систему и получает PIN-код
  6. Пользователь вводит ПИН в приложении
  7. Попросите в Твиттере токен доступа , предоставив параметры потребителя, как указано выше, а также ранее сохраненный токен запроса и ПИН-код.
  8. С этого момента отправляйте токен доступа при каждом вызове в Twitter API, и все будет хорошо.

Twitter4j оборачивает целые последовательности между клиентским приложением и Twitter в своем API. Первое, что нужно сделать, это передать ключ / секрет потребителя. Twitter4j ищет эти параметры в разных местах: свойства системы и twitter4j.properties (в корне пути к классам). Также возможно установить их явно при настройке нашего клиента Twitter. Я лично предпочитаю отделить его и передать как системные свойства JVM.

// Creates the main object
Twitter twitter = new TwitterFactory().getInstance();

// Ask for a request token
RequestToken requestToken = twitter.getOAuthRequestToken();

// Store the token in session
request.getSession().setAttribute("rt", requestToken);

// Extract the authentication URL
String authUrl = requestToken.getAuthenticationURL();

// Send the Twitter authentication page to the page to create a popup from there
request.setAttribute("auth", authUrl);

Это первая часть процесса и заканчивается отправкой пользователя в Twitter. Когда он вернется, он может ввести полученный PIN-код.

// Read the PIN
String pin = request.getParameter("pin");

// Retrieve the request token
RequestToken requestToken = (RequestToken) request.getSession().getAttribute("rt");

// Creates the main object
Twitter twitter = new TwitterFactory().getInstance();

// Ask for an access token
AccessToken accessToken = twitter.getOAuthAccessToken(requestToken, pin);

// Store the token in session
request.getSession().setAttribute("at", accessToken);

// Remove the access token from session
request.getSession().removeAttribute("rt");

// Set the access token on the twitter instance
twitter.setOAuthAccessToken(accessToken);

// Now, we can ask for whatever we want!
ResponseList statuses = twitter.getUserTimeline();

Как только токен доступа получен, мы можем установить его в любом полученном экземпляре Twitter, и мы будем аутентифицированы в инфраструктуре Twitter!

Twitter4j предполагает, что мы уже знаем об API Twitter, что было не в моем случае. Я надеюсь, что эти несколько строк кода могут сэкономить вам много потерянного времени.

Чтобы идти дальше:

Вы можете получить исходники этой статьи в формате Maven / Eclipse здесь .

 

От http://blog.frankel.ch/java-twitter-integration