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.O开发者_开发问答nClickListener()
{
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.
The problem is in this line, which uses java.awt.Desktop:
// open the authorisation page in the user's browser
client.authorizeDesktop();
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:
URI url = client.authorizeUrl();
Intent myIntent = new Intent(Intent.VIEW_ACTION);
myIntent.setData(url);
startActivity(myIntent);
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...
Daniel provides a pretty good starting point. This is how I implemented this in my Android app:
OAuthSignpostClient authClient = new OAuthSignpostClient('apiKey','apiSecret','callbackUrl');
java.net.URI jUrl = authClient.authorizeUrl();
Uri.Builder uriBuilder = new Uri.Builder();
uriBuilder.encodedPath(jUrl.toString());
Intent myIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(jUrl.toString()));
startActivity(myIntent);
of course, I used 'apiKey'
and so on for brevity. You'll need to use your own key, secret and callback url in the OAuthSignpostClient
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.
see this post [Check rev history if you care]
精彩评论