Originally created by: allooba
I am working on a twitter client for desktop (PC and Mac), and I am using Java (pure java) to create this application. Using my own access token, I abled to get all timeline, post tweet, reply, ..etc. However, when I tried to get the access token dynamically (using callback) I couldn't and I looped on this process forever. I am trying to get the AccessToken from Twitter using pure Java. I could get the link for authorization, and I could also open it in the browser. But, I am not able to activate the callback to retrieve it from the browser. Here is my code:
private void loginTwitter(){
try {
String callBackUrl = "twittersdk://";
twitter = TwitterFactory.getSingleton();
twitter.setOAuthConsumer("MY KEY", "MY SECRET KEY");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
final OAuth10aService service = new ServiceBuilder("HmccRQEFoFjNrdLvotAOa3oyQ")
.apiSecret("MY SECRET KEY")
.callback(callBackUrl)
.build(TwitterApi.instance());
RequestToken requestToken = twitter.getOAuthRequestToken();
String url = requestToken.getAuthorizationURL();
AccessToken accessToken = null;
final OAuthRequest request = new OAuthRequest(Verb.GET,url);
final Response response = service.execute(request);
openWebpage(url);
service.signRequest(accessToken, request);
System.out.print(response);
//final OAuth1RequestToken requestToken = service.getRequestToken();
//
String authUrl = service.getAuthorizationUrl(requestToken);
// final OAuth1AccessToken accessToken = service.getAccessToken(requestToken, "verifier you got from the user/callback");
// final OAuthRequest request = new OAuthRequest(Verb.GET, "https://api.twitter.com/1.1/account/verify_credentials.json");
// service.signRequest(accessToken, request); // the access token from step 4
// final Response response = service.execute(request);
System.out.println(requestToken.getToken());
}
catch (TwitterException ex) {
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
}
catch (InterruptedException ex) {
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
}
catch (ExecutionException ex) {
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
}
catch (IOException ex) {
Logger.getLogger(MainWindow.class.getName()).log(Level.SEVERE, null, ex);
}
}
I am using JDK 14 on Netbeans 12.0.