I have tried many different way and search all over the internet to find a tutorial to use JTwitter with OAuth. Here are the following step I have accomplish
Download both Jtwitter and Signpost Add them as Jars in the Java Builder
Created a simple button that run
public class ShareGenerator extends Activity {
private static final String JTWITTER_OAUTH_KEY = "this_is_populated";
private static final String JTWITTER_OAUTH_SECRET = "this_is_populated";
Button menupopButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.share);
this.setContentView(R.layout.share);
this.txShare = (TextView)this.findViewById(R.id.lblshare);
this.menupopButton = (Button)this.findViewById(R.id.menupop);
menupopButton.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
TwitterSend();
}
});
}
and I have my class
public void TwitterSend () {
OAuthSignpostClient client = new OAuthSignpostClient(JTWITTER_OAUTH_KEY, JTWITTER_OAUTH_SECRET, "oob");
Twitter jtwit = new Twitter("bob", client);
// open the authorisation page in the user's browser
client.authorizeDesktop();
// get the pin
String v = client.askUser("Please enter the verification PIN from Twitter");
client.setAuthorizationCode(v);
// Optional: store the authorisation token details
Object accessToken = client.getAccessToken();
// use the API!
jtwit.setStatus("Messing about in Java");
}
However I can't even get the OAuth screen to pop up. It crashes when it get there. Can anyone help me at least see the OAuth screen? I do have the import set correctly.
Daniel provides a pretty good starting point. This is how I implemented this in my Android app:
of course, I used
'apiKey'
and so on for brevity. You'll need to use your own key, secret and callback url in theOAuthSignpostClient
constructor.Note: you need to convert the Java.net.URI provided by JTwitter to an Android.net.Uri to use it to start a new intent.
After this you will need to use an intent-filter to catch the callback url and do something with the user token and secret you will get from the Twitter API.
The problem is in this line, which uses java.awt.Desktop:
That will work on a desktop PC, but not on Android.
Instead, take the url from
client.authorizeUrl();
and send the user there. E.g. with something like this:But I'm not an Android coder! You can almost certainly do better by using a callback instead of
oob
. Hopefully someone else can supply the code for that...see this post [Check rev history if you care]