Статьи

Java-клиент Twitter с Twitter4j

Вдохновлен моим другом, который создал свой собственный клиент Twitter для клиента своей компании. Итак, я попытался создать один с использованием Java. И я удивлен, насколько легко сделать клиент Twitter, конечно, я все еще использую сторонний API, чтобы облегчить свою работу.

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

Прежде всего, вам нужно зайти на официальную регистрацию разработчиков в Твиттере по адресу https://dev.twitter.com/apps/new и зарегистрировать там детали вашего приложения. Для этого блога я создам новое приложение под названием «Namex Tweet for Demo». Это просто, просто заполните некоторые необходимые данные и вуаля, это делается за считанные секунды.

После того, как вы прошли этот этап регистрации, не забывайте, что наиболее важными здесь являются ключи Consumer и Consumer Secret. Короче говоря, это подпись, чтобы Twitter знал ваше приложение. Эти вещи будут жестко закодированы в вашем приложении.

Здесь мой потребительский ключ — DXjHgk9BHPmekJ2r7OnDg, а мой потребительский секретный ключ — u36Xuak99M9tf9Jfms8syFjf1k2LLH9XKJTrAbftE0 . Не используйте эти ключи в своем приложении, это бесполезно, потому что я закрою приложение так же коротко, как этот пост в блоге.

И после шага регистрации не забудьте зайти на страницу настроек и отрегулировать настройки доступа к вашему приложению.

Выберите «Чтение, запись и доступ к прямым сообщениям», чтобы получить полную функциональность вашего приложения.

Теперь вы можете скачать дополнительный Java API для Twitter, я использую Twitter4J . Здесь вы должны загрузить несколько банок,

  • twitter4j Асинхр-а
  • twitter4j-ядро-а
  • twitter4j-медиа-поддержка-а
  • twitter4j-поток-аЬс

Примечание: не используйте twitter4j-appengine.jar, это приведет к тому, что ваше приложение выдаст исключение при авторизации.

В моем примере a равно 2, b равно 2 и c равно 4. Таким образом, это будет выглядеть как twitter4j-async-2.2.4 и т. Д. После того, как эти файлы jar загружены на ваш компьютер, наша работа по загрузке еще не завершена. Мы все еще должны загрузить Apache Commons Codec как зависимости Twitter4J. После того, как все банки загружены, теперь мы можем начать кодировать. Откройте свою любимую IDE и начните со мной.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.namex.tweet;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;
import twitter4j.auth.RequestToken;
 
public class NamexTweet {
    private final static String CONSUMER_KEY = "DXjHgk9BHPmekJ2r7OnDg";
    private final static String CONSUMER_KEY_SECRET = "u36Xuak99M9tf9Jfms8syFjf1k2LLH9XKJTrAbftE0";
 
    public void start() throws TwitterException, IOException {
 
 Twitter twitter = new TwitterFactory().getInstance();
 twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_KEY_SECRET);
 RequestToken requestToken = twitter.getOAuthRequestToken();
 System.out.println("Authorization URL: \n"
  + requestToken.getAuthorizationURL());
 
 AccessToken accessToken = null;
 
 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 while (null == accessToken) {
     try {
  System.out.print("Input PIN here: ");
  String pin = br.readLine();
 
  accessToken = twitter.getOAuthAccessToken(requestToken, pin);
 
     } catch (TwitterException te) {
 
  System.out.println("Failed to get access token, caused by: "
   + te.getMessage());
 
  System.out.println("Retry input PIN");
 
     }
 }
 
 System.out.println("Access Token: " + accessToken.getToken());
 System.out.println("Access Token Secret: "
  + accessToken.getTokenSecret());
 
 twitter.updateStatus("hi.. im updating this using Namex Tweet for Demo");
 
    }
 
    public static void main(String[] args) throws Exception {
 new NamexTweet().start();// run the Twitter client
    }
}

Скомпилируйте и запустите код, он создаст разрешение для «Namex Tweet for Demo», которое будет связано с вашей учетной записью Twitter. Просто откройте «URL авторизации», показанный на экране, и введите PIN-код, указанный на веб-сайте.

Ваша заявка отправит пин-код обратно в Twitter, если он совпадает, ваша учетная запись будет связана с этим новым приложением, и вы увидите, что вы только что опубликовали новый статус, используя «Namex Tweet for Demo». Поздравляем!

Примечание. URL-адрес и PIN-код авторизации будут генерироваться по-разному при каждом запуске.

Здесь вы можете видеть, что мы не предоставляем имя пользователя и пароль учетной записи Twitter, но мы можем использовать нашу учетную запись в приложении. Да, это возможно из-за OAuth. Он «преобразовал» процесс ввода пароля в токен отправки. Так что не волнуйтесь, стороннее клиентское приложение Twitter не может прочитать и сохранить пароль вашей учетной записи Twitter. Это просто, это безопаснее и предотвращает воровство паролей.

Теперь у нас все еще есть крошечная проблема, в этот момент вашей программе все еще нужно открыть веб-сайт Twitter и вернуть пин-код приложению. Итак, может быть, вы спрашиваете, в облаке, мне нужна эта надоедливая авторизация на будущее? Ну, с удовольствием ответ НЕТ. В то время, когда ваше приложение авторизуется в Twitter, вы не можете повторно авторизовать его — просто отметьте, что вам нужно сохранить токен доступа и секретный токен доступа.

Какого черта это, как я мог получить это. Ну, у вас уже есть, смотрите изображение ниже, я поместил его в большой красный прямоугольник, чтобы он был более броским. Здесь наш токен и наш секретный токен. Эти 2 токена нужно где-то сохранить, вы можете выбрать свой собственный метод для сохранения: постоянство, CSV, СУБД и т. Д. Все зависит от вас.

Итак, я спас токены! Как я могу использовать это снова? Это просто, смотрите код ниже. Это как использовать ваши токены, так что у вас больше не будет повторной авторизации. Попробуйте опубликовать и прочитать ваш график сейчас.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package com.namex.tweet;
 
import java.io.IOException;
 
import twitter4j.ResponseList;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.auth.AccessToken;
 
public class NamexTweet {
  
    private final static String CONSUMER_KEY = "DXjHgk9BHPmekJ2r7OnDg";
    private final static String CONSUMER_KEY_SECRET =
     "u36Xuak99M9tf9Jfms8syFjf1k2LLH9XKJTrAbftE0";
 
    public void start() throws TwitterException, IOException {
 
 Twitter twitter = new TwitterFactory().getInstance();
 twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_KEY_SECRET);
 
 // here's the difference
 String accessToken = getSavedAccessToken();
 String accessTokenSecret = getSavedAccessTokenSecret();
 AccessToken oathAccessToken = new AccessToken(accessToken,
  accessTokenSecret);
 
 twitter.setOAuthAccessToken(oathAccessToken);
 // end of difference
 
 twitter.updateStatus("Hi, im updating status again from Namex Tweet for Demo");
 
 System.out.println("\nMy Timeline:");
 
 // I'm reading your timeline
 ResponseList list = twitter.getHomeTimeline();
 for (Status each : list) {
 
     System.out.println("Sent by: @" + each.getUser().getScreenName()
      + " - " + each.getUser().getName() + "\n" + each.getText()
      + "\n");
 }
 
    }
 
    private String getSavedAccessTokenSecret() {
 // consider this is method to get your previously saved Access Token
 // Secret
 return "oC8tImRFL6i8TuRkTEaIcWsF8oY4SL5iTGNkG9O0Q";
    }
 
    private String getSavedAccessToken() {
 // consider this is method to get your previously saved Access Token
 return "102333999-M4W1Jtp8y8QY8RH7OxGWbM5Len5xOeeTUuG7QfcY";
    }
 
    public static void main(String[] args) throws Exception {
 new NamexTweet().start();
    }
 
}

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

Справка: как легко создать свой собственный клиент Twitter, используя Java от нашего партнера JCG Рональда в блоге Naming Exception .

Статьи по Теме :