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

  • 新建一个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被墙, 所以需要代理. 用这个命令可以起一个链接到代理的模拟器

  • 引用 ./emulator -avd adv8 -http-proxy 192.168.1.13:8118 -debug-proxy

    附件是源码.

    参考:

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

    http://abhinavasblog.blogspot.com/2010/09/using-twitter-with-oauth-on-andorid.html

    更多相关文章

    1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
    2. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
    3. Android绘制流程窗口启动流程分析(下)
    4. Gradle DSL method not found: 'android()错误的解决方法
    5. 据说年薪30万的Android程序员必须知道的帖子
    6. Android(安卓)AndroidStaggeredGrid 开源项目
    7. Android(安卓)Studio多渠道批量打包及代码混淆
    8. android配置开发环境
    9. Android程序运行中动态加载Lib的方法(一)

    随机推荐

    1. 在Android2.2模拟器上安装Android(安卓)M
    2. android的onCreateOptionsMenu()创建菜单
    3. android中的apk签名
    4. Android经典应用程序开发
    5. Android(安卓)OOM内存溢出解决方案之一
    6. Android(安卓)的开源电话/通讯/IM聊天项
    7. android service 学习
    8. 安卓 Android之开发简单小应用(一)
    9. Android开发周刊 第四期
    10. 用kotlin打印出漂亮的android日志(三)—