Archive for February, 2012
Changes in Twitter4J 2.2.5
Over a year ago, I wrote an article on how to update Twitter status using Twitter4J:
Update your Twitter status with Java
Note that I was using the version 2.1.7 of Twitter4J at that time.
Following a few comments from users who were getting errors, I decided to get my code working on the latest version of Twitter4J, the version 2.2.5. 🙂
This is the two differences I found:
- The package
twitter4j.http
has been renamedtwitter4j.auth
; - The constructor of the object
twitter4j.auth.OAuthAuthorization
has changed and now only take an object of typetwitter4j.conf.Configuration
.
Considering this, please find below the updated code to get the access token:
import java.io.BufferedReader; import java.io.InputStreamReader; import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.auth.AccessToken; import twitter4j.auth.RequestToken; public class TwitterAccessToken { private static final String CONSUMER_KEY = "[your consumer key]"; private static final String CONSUMER_SECRET = "[you consumer secret]"; public static void main(String[] args) throws Exception { Twitter twitter = new TwitterFactory().getInstance(); twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); RequestToken requestToken = twitter.getOAuthRequestToken(); AccessToken accessToken = null; BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); while (null == accessToken) { System.out.println("Open the following URL and grant access to your account:"); System.out.println(requestToken.getAuthorizationURL()); System.out.print("Enter the PIN (if available) or just hit enter.[PIN]:"); String pin = br.readLine(); try { if (pin.length() > 0) { accessToken = twitter.getOAuthAccessToken(requestToken, pin); } else { accessToken = twitter.getOAuthAccessToken(); } } catch (TwitterException e) { if (401 == e.getStatusCode()) { System.err.println("Unable to get the access token."); } else { e.printStackTrace(); } } } System.out.println("Access Token: " + accessToken.getToken()); System.out.println("Access Token Secret: " + accessToken.getTokenSecret()); } }
And here is the amended code which allows to update your Twitter status:
import twitter4j.Twitter; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.auth.OAuthAuthorization; import twitter4j.conf.ConfigurationBuilder; public class TwitterTest { private static final String ACCESS_TOKEN = "[your access token]"; private static final String ACCESS_TOKEN_SECRET = "[your access token secret]"; private static final String CONSUMER_KEY = "[your consumer key]"; private static final String CONSUMER_SECRET = "[you consumer secret]"; public static void main(String[] args) { ConfigurationBuilder builder = new ConfigurationBuilder(); builder.setOAuthAccessToken(ACCESS_TOKEN); builder.setOAuthAccessTokenSecret(ACCESS_TOKEN_SECRET); builder.setOAuthConsumerKey(CONSUMER_KEY); builder.setOAuthConsumerSecret(CONSUMER_SECRET); OAuthAuthorization auth = new OAuthAuthorization(builder.build()); Twitter twitter = new TwitterFactory().getInstance(auth); try { twitter.updateStatus("Hello World!"); } catch (TwitterException e) { System.err.println("Error occurred while updating the status!"); return; } System.out.println("Successfully updated the status."); } }
See you maybe next year for an update on using the version 2.3 of Twitter4j. 😉