Use twitter4j oauth to post status in Android(安卓)app
16lz
2021-01-24
我们这里使用twitter4j来实现这个功能. http://twitter4j.org/
新建一个android项目 下载twitter4j-core-2.1.8.jar, 放到${base.dir}/libs, 并加到项目的classpath中 MyActivity
consumerKey, consumerSecret需要换成你们自己的, 在twitter中创建app后可以得到. 这里要注意的是CALLBACKURL变量, 这里是用户verfiy之后browser回调的url. 这个我们需要在AndroidManifest.xml定义. 这样就能使browser带回到MyActivity中. AndroidManifest.xml
在国内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
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(); }}
<?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>
引用 ./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
更多相关文章
- 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
- 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
- Android绘制流程窗口启动流程分析(下)
- Gradle DSL method not found: 'android()错误的解决方法
- 据说年薪30万的Android程序员必须知道的帖子
- Android(安卓)AndroidStaggeredGrid 开源项目
- Android(安卓)Studio多渠道批量打包及代码混淆
- android配置开发环境
- Android程序运行中动态加载Lib的方法(一)