Статьи

Использование twitter4j с Play!

Во время вчерашнего личного хакатона я начал проект, который я мог бы представить здесь когда-нибудь. Но самое крутое откровение было (опять же), как легко было встать и бежать.

  1. Создать новый Play Project
  2. Добавьте Secure Social и настройте его для Twitter, а также используйте InMemoryUserService из примеров. (все это описано здесь http://securesocial.ws/guide/getting-started.html и занимает всего минуту)
  3. Добавьте зависимость к twitter4j в ваш Build.scala следующим образом:

    1
    'org.twitter4j'% 'twitter4j-core'% '3.0.3'
  4. Снимок экрана 2013-02-01 в 14.54.45

  5. Защитите свой метод действия контроллера для принудительной аутентификации (входа в систему) через Twitter. Помните — поскольку вы используете InMemoryUserService, ни одна из данных аутентификации не сохраняется — вам придется каждый раз переподключаться.
    @SecureSocial.SecuredAction
  6. Затем я добавил эти стандартные методы, чтобы получить аутентифицированного пользователя Twitter, токен, секрет и соединение twitter4J: (tokenSecret, токен и текущий пользователь происходят из безопасного социального соединения Oauth1 и используются для аутентификации соединения Twitter.

    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
    public static Twitter getTwitterInstance() {
    // The factory instance is re-useable and thread safe.
    TwitterFactory factory = new TwitterFactory();
    Twitter twitter = new TwitterFactory().getInstance();twitter.setOAuthConsumer(Play.application().configuration()
    .getString('securesocial.twitter.consumerKey'), Play.application().configuration().getString('securesocial.twitter.consumerSecret'));
    twitter4j.auth.AccessToken accessToken = new twitter4j.auth.AccessToken(token(), tokenSecret());
    twitter.setOAuthAccessToken(accessToken);
    return twitter;
    }
    public static String tokenSecret() {
    String retval = '';
    scala.collection.Iterator iterator = Application.getCurrentUser().oAuth1Info().iterator();
    while (iterator.hasNext()) {
    OAuth1Info oAuth1Info = iterator.next();
    retval = oAuth1Info.secret();
    }
    return retval;
    }
    public static String token() {
    String retval = '';
    scala.collection.Iterator iterator = Application.getCurrentUser().oAuth1Info().iterator();
    while (iterator.hasNext()) {
    OAuth1Info oAuth1Info = iterator.next();
    retval = oAuth1Info.token();
    }
    return retval;
    }
    public static Identity getCurrentUser() {
    return (Identity) ctx().args.get(SecureSocial.USER_KEY);
    }
  7. Затем я добавил код в мой контроллер, чтобы перечислить (например) моих подписчиков
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    long cursor = -1;
    IDs ids;
    System.out.println('Listing following ids.');
    do {
    ids = twitter.getFriendsIDs(cursor);
    for (long id : ids.getIDs()) {
    twitter4j.User twitterUser = twitter.showUser(id);
    twitterUsers.put(twitterUser.getScreenName(), new TwitterUser(id,twitterUser));
    System.out.println(id);
    }
    } while ((cursor = ids.getNextCursor()) != 0);

Да, вот и все …

Справка: Использование twitter4j с Play! Framework и Secure Social — это просто благодаря нашему партнеру по JCG Брайану Портеру из блога Poornerd .