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.httphas been renamedtwitter4j.auth; - The constructor of the object
twitter4j.auth.OAuthAuthorizationhas 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. 😉

