`
dengyin2000
  • 浏览: 1226110 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Use twitter4j oauth to post status in Android app

阅读更多
我们这里使用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
    分享到:
    评论
    4 楼 chenleijava 2012-07-10  
    发现这个和百度魔图一样,授权完后,callback 不回来!!
    3 楼 lewis_huang 2011-09-26  
    ..不是吧。。变化这么快。。不过代码都差不多。。就是过不了。。
    2 楼 dengyin2000 2011-09-26  
    lewis_huang 写道
    老邓啊。。你这代码我试了很多次了。。过不了啊。。那callback url是不是只要manifest里面注册就行了啊。。过不了啊


    你是谁呀 这个例子比较早了  过不了正常的
    1 楼 lewis_huang 2011-09-26  
    老邓啊。。你这代码我试了很多次了。。过不了啊。。那callback url是不是只要manifest里面注册就行了啊。。过不了啊

    相关推荐

      本地发布文章到twitter和facebo Twitter OAuth the easy way – simple post to twitter script

      在描述中提到的“Twitter OAuth the easy way – simple post to twitter script”,暗示我们将讨论一个简单的脚本,该脚本简化了使用OAuth进行身份验证并发布到Twitter的过程。这个脚本可能是一个易于理解和使用的...

      twitter4j 最新api

      Twitter4j是一个开源Java库,专门用于与Twitter API交互,为开发者提供了丰富的功能,包括发布推文、检索推文、管理关注者、处理事件监听等。这个最新的API版本旨在简化和增强开发者在Twitter平台上的开发体验。以下...

      weibo4j-oauth2-2.1.1-beta3.1.1.jar(已使用IDEA构建成jar和jar源码)

      《微博API接入实战:解析weibo4j-oauth2-2.1.1-beta3.1.1.jar》 在当今社交媒体盛行的时代,微博作为中国最大的社交网络平台之一,其API接口的使用对于开发者来说至关重要。`weibo4j-oauth2-2.1.1-beta3.1.1.jar`是...

      微博weibo4j-oauth包

      微博weibo4j-oauth包是一个专门为开发微博爬虫提供支持的Java库,它基于OAuth 2.0协议,使得开发者能够安全地访问微博API,获取用户数据或进行其他交互操作。这个包的核心功能在于帮助开发者处理微博的授权流程,为...

      sinaWeibo javaSDK-weibo4j-oauth2-beta3.1.1

      《全面解析 sinaWeibo javaSDK - weibo4j-oauth2-beta3.1.1》 在当今社交媒体时代,新浪微博作为中国最受欢迎的社交平台之一,为开发者提供了丰富的API接口,以便构建与微博互动的应用程序。其中,`sinaWeibo java...

      Twitter API Client(gridtwit) oauth demo C++源代码

      用 C++ 语言实现 twitter 的 oauth 鉴权全过程。另外还有详细的文档试用说明(Demo_Description.doc)。这里拿出来共享,是希望大家在做同类产品时,在 OAUTH 鉴权过程中,可以参考这个,并少花点时间。 文件清单...

      weibo4j-oauth2-beta2.1.1.zip

      《微博API库weibo4j-oauth2在Android开发中的应用与实践》 微博作为中国社交媒体的重要平台,其API接口为开发者提供了丰富的功能,能够帮助开发者实现与微博平台的深度集成。本文主要围绕"weibo4j-oauth2-beta2.1.1...

      Twitter4j(A Java library for the Twitter API)

      Status status = twitter.updateStatus("Hello, Twitter4J!"); System.out.println("Successfully updated the status to [" + status.getText() + "]."); } catch (TwitterException e) { e.printStackTrace(); ...

      OAuth.2.in.Action.pdf

      《OAuth 2.0 实战》是一本深入探讨OAuth 2.0协议的专业书籍,它主要面向开发者和系统架构师,旨在帮助读者理解和实施OAuth 2.0授权框架,以安全地实现第三方应用的访问权限控制。OAuth 2.0是互联网上广泛采用的开放...

      weibo4j-oauth2

      weibo4j-oauth2

      Android分享到twitter的demo源码

      - 当用户点击分享按钮时,应用会调用`twitter4j`库的方法,例如`Twitter.getInstance().updateStatus()`,传入用户输入的文字,发送一条新的推文。 6. **权限处理**: - 在AndroidManifest.xml中,需要声明网络...

      Android-使用OkHttp的AndroidOAuth2客户端

      在Android开发中,网络编程是不可或缺的一部分,而OAuth2是一种广泛使用的授权协议,它为安全地访问第三方资源提供了便利。本教程将详细讲解如何在Android应用中使用OkHttp实现OAuth2客户端,以便与服务器进行安全的...

      oauth2.in.action

      We want you to come away from this book with a deep understanding of what OAuth can do, why it works the way that it does, and how to deploy it properly and securely in an unsafe internet. ...

      android-twitter:使用 twitter4j for android 的 twitter 库

      twitter 库使用 twitter4j,TwitterOAuthView for android 安卓推特 这个库是简单的 twitter oauth 和 tweet。 如果您在没有库的情况下登录 Twitter,则必须运行 Web 浏览器应用程序。 这个库让你可以简单地做到这...

      GitHub Android App源码

      【GitHub Android App源码解析】 GitHub Android App 是一个官方出品的应用程序,允许用户在移动设备上无缝地浏览、管理以及协作开发GitHub上的项目。这款应用的源码是公开的,对于Android开发者而言,它是一个宝贵...

      OAuth认证整合Android版-demo示例初学者

      OAuth认证在Android开发中是一个重要的知识点,特别是在移动应用与第三方服务集成时,如社交媒体登录、云存储服务等。OAuth允许用户授权第三方应用访问其私有资源,而无需分享用户名和密码,增强了安全性。本示例是...

    Global site tag (gtag.js) - Google Analytics