Using twitter4j with Play! Framework and Secure Social is this easy

About Brian Porter

Dur­ing yesterday’s per­sonal Hackathon, I started a project which I might intro­duce here some­time. But the coolest rev­e­la­tion was (again) how easy it was to get up and running.

  1. Cre­ate a new Play Project
  2. Add Secure Social and con­fig­ure it for Twit­ter, and use the InMem­o­ryUserSer­vice from the exam­ples. (all this is described here http://securesocial.ws/guide/getting-started.html and only takes a minute)
  3. Add the depen­decy to twitter4j to your Build.scala like this:
     
     
    'org.twitter4j'% 'twitter4j-core'% '3.0.3'
  4. Screen Shot 2013-02-01 at 14.54.45

  5. Secure your con­troller action method to force the (Login) Authen­ti­ca­tion with Twit­ter. Remem­ber — because you are using the InMem­o­ryUserSer­vice none of the Authen­ti­ca­tion data is stored — you will have to recon­nect each time.
    @SecureSocial.SecuredAction
  6. I then added these stan­dard meth­ods to get the Authen­ti­cated Twit­ter User, Token, Secret and the twitter4J Con­nec­tion: (The tokenSe­cret, token and cur­rent User are com­ing from the Secure Social Oauth1 Con­nec­tion, and are used to authen­ti­cate the Twit­ter Con­nec­tion.
     
     
     
     
     
     
    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. Then I added some code in my Con­troller to list (for exam­ple) my Fol­low­ers
    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);

Yes, that is it…
 

Reference: Using twitter4j with Play! Framework and Secure Social is this easy from our JCG partner Brian Porter at the Poornerd blog.




Source : http://www.javacodegeeks.com/2013/03/using-twitter4j-with-play-framework-and-secure-social-is-this-easy.html

Back to Top