Во время вчерашнего личного хакатона я начал проект, который я мог бы представить здесь когда-нибудь. Но самое крутое откровение было (опять же), как легко было встать и бежать.
- Создать новый Play Project
- Добавьте Secure Social и настройте его для Twitter, а также используйте InMemoryUserService из примеров. (все это описано здесь http://securesocial.ws/guide/getting-started.html и занимает всего минуту)
- Добавьте зависимость к twitter4j в ваш Build.scala следующим образом:
1
'org.twitter4j'%'twitter4j-core'%'3.0.3' - Защитите свой метод действия контроллера для принудительной аутентификации (входа в систему) через Twitter. Помните — поскольку вы используете InMemoryUserService, ни одна из данных аутентификации не сохраняется — вам придется каждый раз переподключаться.
@SecureSocial.SecuredAction - Затем я добавил эти стандартные методы, чтобы получить аутентифицированного пользователя Twitter, токен, секрет и соединение twitter4J: (tokenSecret, токен и текущий пользователь происходят из безопасного социального соединения Oauth1 и используются для аутентификации соединения Twitter.
010203040506070809101112131415161718192021222324252627282930
publicstaticTwitter getTwitterInstance() {// The factory instance is re-useable and thread safe.TwitterFactory factory =newTwitterFactory();Twitter twitter =newTwitterFactory().getInstance();twitter.setOAuthConsumer(Play.application().configuration().getString('securesocial.twitter.consumerKey'), Play.application().configuration().getString('securesocial.twitter.consumerSecret'));twitter4j.auth.AccessToken accessToken =newtwitter4j.auth.AccessToken(token(), tokenSecret());twitter.setOAuthAccessToken(accessToken);returntwitter;}publicstaticString tokenSecret() {String retval ='';scala.collection.Iterator iterator = Application.getCurrentUser().oAuth1Info().iterator();while(iterator.hasNext()) {OAuth1Info oAuth1Info = iterator.next();retval = oAuth1Info.secret();}returnretval;}publicstaticString token() {String retval ='';scala.collection.Iterator iterator = Application.getCurrentUser().oAuth1Info().iterator();while(iterator.hasNext()) {OAuth1Info oAuth1Info = iterator.next();retval = oAuth1Info.token();}returnretval;}publicstaticIdentity getCurrentUser() {return(Identity) ctx().args.get(SecureSocial.USER_KEY);} - Затем я добавил код в мой контроллер, чтобы перечислить (например) моих подписчиков
0102030405060708091011
longcursor = -1;IDs ids;System.out.println('Listing following ids.');do{ids = twitter.getFriendsIDs(cursor);for(longid : ids.getIDs()) {twitter4j.User twitterUser = twitter.showUser(id);twitterUsers.put(twitterUser.getScreenName(),newTwitterUser(id,twitterUser));System.out.println(id);}}while((cursor = ids.getNextCursor()) !=0);
Да, вот и все …
Справка: Использование twitter4j с Play! Framework и Secure Social — это просто благодаря нашему партнеру по JCG Брайану Портеру из блога Poornerd .
