Use twitter4j oauth to post status in Android app

我们这里使用twitter4j来实现这个功能. [url]http://twitter4j.org/[/url]


[*] 新建一个android项目
[*] 下载twitter4j-core-2.1.8.jar, 放到${base.dir}/libs, 并加到项目的classpath中
[*] MyActivity

package com.example;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.conf.ConfigurationBuilder;
import twitter4j.http.AccessToken;
import twitter4j.http.RequestToken;

import java.util.Date;

public class MyActivity extends Activity {


private final String CALLBACKURL = "myapp://mainactivity";
private static Twitter twitter;

private TextView tweetTextView;
private Button buttonLogin;


public static final String consumerKey = "XXXXXXXXX";
public static final String consumerSecret = "XXXXXXXXXXXXXXXX";

private void doOauth() {


try {

twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(consumerKey, consumerSecret);
RequestToken requestToken = twitter.getOAuthRequestToken(CALLBACKURL);
System.out.println("Got request token.");
System.out.println("Request token: "+ requestToken.getToken());
System.out.println("Request token secret: "+ requestToken.getTokenSecret());
this.startActivity(new Intent(Intent.ACTION_VIEW,
Uri.parse(requestToken.getAuthenticationURL())));
} catch (TwitterException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Uri uri = intent.getData();
if (uri != null && uri.toString().startsWith(CALLBACKURL)) {
String verifier =
uri.getQueryParameter("oauth_verifier");
try {
AccessToken oAuthAccessToken = twitter.getOAuthAccessToken(verifier);
// TODO: store the oauthaccess token
// create a tweet
Date d =
new Date(System.currentTimeMillis());
String tweet = "#OAuth working! " + d.toLocaleString();
// send the tweet
twitter.updateStatus(tweet);
// feedback for the user...
Toast.makeText(this, tweet, Toast.LENGTH_LONG).show();
buttonLogin.setVisibility(Button.GONE);
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tweetTextView = (TextView) findViewById(R.id.tweet);
buttonLogin = (Button) findViewById(R.id.ButtonLogin);
setContentView(R.layout.main);
doOauth();

}
}

[*] consumerKey, consumerSecret需要换成你们自己的, 在twitter中创建app后可以得到. 这里要注意的是CALLBACKURL变量, 这里是用户verfiy之后browser回调的url. 这个我们需要在AndroidManifest.xml定义. 这样就能使browser带回到MyActivity中.
[*] AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example"
android:versionCode="1"
android:versionName="1.0">
<application android:label="twittertest" android:icon="@drawable/icon" android:debuggable="true">
<activity android:name="MyActivity"
android:label="@string/app_name" android:launchMode="singleInstance" >
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>

<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="myapp" android:host="mainactivity"/>
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
</manifest>

[*] 在国内twitter被墙, 所以需要代理. 用这个命令可以起一个链接到代理的模拟器

[quote]./emulator -avd adv8 -http-proxy 192.168.1.13:8118 -debug-proxy[/quote]

[color=red]附件是源码.[/color]

参考:

[url]http://groups.google.com/group/twitter-development-talk/browse_thread/thread/e4fc18c1398895c4/9d4a29f66f930a3e?lnk=gst&q=OAuth[/url]

[url]http://abhinavasblog.blogspot.com/2010/09/using-twitter-with-oauth-on-andorid.html[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值