`
jasonlhm
  • 浏览: 17379 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android 腾讯微博分享功能

阅读更多
创建应用,会得到一个唯一的key和secret,如下图







需要导入除了core.jar外的其他包,如下图









我自己写了一个调用腾讯微博的类 TencentWeiboUtil

public class TencentWeiboUtil{

    public static final String fileName = "token_store";



    private static OAuth oauth;

    private static OAuthClient auth;



    private final String KEY = "801115034";

    private final String SECRET = "6dfcb2d5e8fe5115f917b136ab7ff6e8";



    private String clientIp;



    private static TencentWeiboUtilinstance;



    private TestActivity mActivity;



    private String mOauth_token;



    private String mOauth_token_secret;



    public static TencentWeiboUtilgetInstance() {

       if (instance == null) {

           instance = new TencentWeiboUtil();

       }

       return instance;

    }



    private TencentWeiboUtil() {

       if (oauth == null) {

           oauth = new OAuth(KEY, SECRET, "qweibo4android://OAuthActivity"); // 初始化OAuth请求令牌

       }

       mActivity = AppConst.getInstance().getActivity();

    }



    public void sendTencentWeibo() {

       String[] oauth_token_array = fetch(mActivity);

       mOauth_token = oauth_token_array[0];

       mOauth_token_secret = oauth_token_array[1];

       if (mOauth_token != null && mOauth_token_secret != null) {

           oauth.setOauth_token(mOauth_token);

           oauth.setOauth_token_secret(mOauth_token_secret);

           shareTentcentWeibo();

           return;

       }

       // 获取requesttoken

       try {

           if (auth == null) {

              auth = new OAuthClient();// OAuth 认证对象

           }

           oauth = auth.requestToken(oauth);

           if (oauth.getStatus() == 1) {

              System.out.println("Get RequestToken failed!");

              return;

           } else {

              String toauth_token = oauth.getOauth_token();



              String url = "http://open.t.qq.com/cgi-bin/authorize?oauth_token="

                     + toauth_token;



              Log.d("tag=========", "AndroidExampleurl = " + url);



              Uri uri = Uri.parse(url);



              mActivity.startActivity(new Intent(Intent.ACTION_VIEW, uri));

           }

       } catch (Exception e) {

           // TODO Auto-generatedcatch block

           e.printStackTrace();

       }

    }



    /**

     * get token from verifiercode

     *

     * @param oauth_verifier

     * @param oauth_token

     */

    public void getToken(String oauth_verifier, String oauth_token) {

       oauth.setOauth_verifier(oauth_verifier);

       oauth.setOauth_token(oauth_token);



       clientIp = Configuration.wifiIp;

       Log.v("tag============", "clientIp:" + clientIp);



       try {

           oauth = auth.accessToken(oauth);

       } catch (VerifyError err) {

           err.printStackTrace();

       } catch (Exception e) {

           // TODO Auto-generatedcatch block

           e.printStackTrace();

       }



       if (oauth.getStatus() == 2) {

           System.out.println("Get AccessToken failed!");

           return;

       } else {

           Log.d("tag===========",

                  "OAuthActivity Oauth_token : " + oauth.getOauth_token());

           Log.d("tag===========", "OAuthActivityOauth_token_secret : "

                  + oauth.getOauth_token_secret());



           // 已经拿到access token,可以使用oauth对象访问所有API了

           // 将accesstoken存储到SharedPreferences里

           store(mActivity, oauth);

       }



       shareTentcentWeibo();

    }



    private void shareTentcentWeibo() {

       T_API tapi = new T_API();



       String content = "腾讯微博分享测试";



       if (content == "") {

           content = "发表微博";

       }



       try {

           String str = tapi.add(oauth, "json", content, clientIp, "", "");

           Log.v("tag===============", "result str= " + str);

           org.json.JSONTokener ae = null;

           ae = new org.json.JSONTokener(str);

           try {

              JSONObject msg = (JSONObject) ae.nextValue();

              int errCode = -1;

              if (!msg.isNull("errcode")) {

                  errCode = msg.getInt("errcode");

              }

              Message message = new Message();

              message.what = AppConst.MSG_RECEVIED_TENCENT_WEIBO_RESULT;

              if (errCode == 0) {

                  message.obj = mActivity.getResources().getString(

                         R.string.send_sucess);

              }else {

                  String result = "";

                  if (!msg.isNull("msg")) {

                     result = msg.getString("msg");

                     message.obj = result;

                  }

              }

              AppConst.getInstance().getUIHandler().sendMessage(message);

           } catch (Exception ex) {



           }

       } catch (Exception e) {

           // TODO Auto-generatedcatch block

           e.printStackTrace();

       }

    }



public static void store(Activity activity,

           com.tencent.weibo.beans.OAuth oauth) {

       SharedPreferences settings = activity.getSharedPreferences(fileName,

              Context.MODE_PRIVATE);



       SharedPreferences.Editor editor = settings.edit();



       editor.putString("oauth_token", oauth.getOauth_token());

       editor.putString("oauth_token_secret", oauth.getOauth_token_secret());



       editor.commit();

    }



    public static String[] fetch(Activity activity) {

       SharedPreferences settings = activity.getSharedPreferences(fileName,

              Context.MODE_PRIVATE);



       String oauth_token = settings.getString("oauth_token", null);

       String oauth_token_secret = settings.getString("oauth_token_secret",

              null);



       return new String[] { oauth_token, oauth_token_secret };

    }



    public static void clear(Activity activity) {

       SharedPreferences settings = activity.getSharedPreferences(fileName,

              Context.MODE_PRIVATE);



       SharedPreferences.Editor editor = settings.edit();



       editor.clear();

       editor.commit();

    }

}



在AppConst定义了两个静态全局变量

    public static String mOauth_verifier = null;

  

    public static String mOauth_token = null;



定义了腾讯微博分享后跳转的Activity TencentWeiboJumpActivity

public class TencentWeiboJumpActivity extends Activity {



    @Override

    protected void onCreate(Bundle savedInstanceState) {

       // TODO Auto-generatedmethod stub

       super.onCreate(savedInstanceState);

       Intent intent = new Intent(this, TestActivity.class);

       Uri uri = this.getIntent().getData();

       if (uri != null) {

           AppConst.mOauth_verifier = uri.getQueryParameter("oauth_verifier");

           AppConst.mOauth_token = uri.getQueryParameter("oauth_token");

           this.startActivity(intent);

       }

       this.finish();

    }



}



在TestActivity的OnResume方法中加入了以下代码

if (AppConst.mOauth_verifier != null && AppConst.mOauth_token != null) {

           TencentWeiboUtil.getInstance()

                  .getToken(AppConst.mOauth_verifier, AppConst.mOauth_token);

           AppConst.mOauth_verifier = null;

           AppConst.mOauth_token = null;

       }



在Mainfest中加入以下信息

<activity

           android:name=".TencentWeiboJumpActivity"

           android:launchMode="singleTop">

            <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:host="OAuthActivity"

                    android:scheme="qweibo4android"/>

            </intent-filter>

       </activity>



腾讯微博需要加入的权限

    <uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
分享到:
评论
1 楼 somefuture 2012-09-04  
大哥,你 从哪里转来的,写好源地址好不?你这怎么读呢?代码放进code中行不
if (AppConst.mOauth_verifier != null && AppConst.mOauth_token != null) { 

           TencentWeiboUtil.getInstance() 

                  .getToken(AppConst.mOauth_verifier, AppConst.mOauth_token); 

           AppConst.mOauth_verifier = null; 

           AppConst.mOauth_token = null; 

       } 

相关推荐

    android腾讯微博分享demo

    总结来说,"android腾讯微博分享demo"是一个实用的教程,它涵盖了在Android应用中集成腾讯微博分享功能的关键步骤,包括SDK集成、权限配置、授权处理、内容分享以及用户交互。对于想要学习这方面的开发者来说,这是...

    android 腾讯微博 分享

    本教程将详细讲解如何在Android应用中集成腾讯微博分享功能。 首先,我们需要在腾讯开放平台上注册一个开发者账号,并创建一个新的应用。在应用管理页面,获取到应用的AppID和AppKey,这两个参数是后续集成的关键,...

    android腾讯微博分享实例

    在Android平台上,腾讯微博分享是一种常见的社交功能,它允许用户将文字、图片、链接等内容一键发布到自己的腾讯微博账号上,与其他用户互动。本实例主要关注如何在Android应用中实现这一功能,通过集成腾讯微博SDK...

    Android新浪微博分享SDK

    本文将深入探讨"Android新浪微博分享SDK"和"Android腾讯微博分享SDK"的相关知识点,帮助开发者实现高效、便捷的微博分享功能。 1. **微博SDK概述** 微博SDK(Software Development Kit)是由微博官方提供的,用于...

    Android 腾讯微博 部分源码

    这份“Android腾讯微博部分源码”为我们提供了一个宝贵的资源,可以深入理解腾讯微博客户端的实现机制,以及如何在Android上构建类似的应用。 源码分析: 1. **网络通信**:腾讯微博的源码中,很可能会包含使用...

    Android腾讯微博源码

    这里我们讨论的是“Android腾讯微博源码”,这是一份宝贵的资源,可以帮助开发者深入理解Android应用开发,特别是社交应用的实现细节。这份源码提供了客户端的全部代码,意味着我们可以探索其背后的架构设计、功能...

    新浪、腾讯微博,微信好友、朋友圈 分享

    2. 腾讯微博分享: 类似于新浪,腾讯微博也有自己的SDK,同样需要注册获取App ID和App Secret。调用分享接口时,需要用户授权,然后可以分享文本、图片、网页链接等内容。需要注意的是,腾讯微博的分享可能需要处理...

    新浪腾讯微博分享demo

    本篇文章将深入探讨“新浪腾讯微博分享demo”,这是一个专为Android平台设计的示例项目,它实现了通过Oauth2.0协议与新浪微博和腾讯微博的无缝对接,支持文字和图片的分享功能。以下我们将详细解析这个项目的重点...

    Android 腾讯微博客户端源码1.rar

    【标题】"Android 腾讯微博客户端源码1.rar" 涵盖了Android平台上腾讯微博客户端应用程序的源代码,这是一个深入理解Android应用开发、社交网络集成以及腾讯微博API使用的宝贵资源。在这个源码中,我们可以看到如何...

    Android 腾讯微博客户端源码

    在这个项目中,我们可以看到如何将微博功能集成到Android应用中,包括登录、发布、浏览、评论和分享等基本操作。 首先,我们要了解Android应用的基本结构,这通常包括`Activity`(用于用户交互的界面)、`Service`...

    简单腾讯微博分享

    总的来说,"简单腾讯微博分享"项目旨在简化Android应用中多平台分享的实现,让开发者能够快速集成和定制分享功能,同时考虑到用户体验和数据安全。通过学习和实践这个项目,开发者可以掌握如何与社交媒体平台进行...

    腾讯微博开放平台

    在移动开发领域,腾讯微博开放平台为开发者提供了一个强大的工具,允许他们集成微博功能到自己的Android应用程序中。这个平台提供了丰富的API,使得开发者可以轻松实现用户登录、微博发布、信息获取等一系列操作。...

    android仿腾讯微博客户端

    《Android仿腾讯微博客户端开发详解》 在移动互联网飞速发展的今天,社交应用已经成为人们日常生活中不可或缺的一部分。作为中国主流的社交媒体平台,腾讯微博在移动端的重要性不言而喻。本篇将详细介绍如何在...

    android腾讯微博OAUTH2.0认证登陆(含发微博)

    RT,基于OAUTH2.0的腾讯微博认证以及发送微博,代码简洁易懂,方便童鞋们开发需要用到分享信息到腾讯微博功能的应用,具体教程可留意我的CSDN博客http://blog.csdn.net/geniuseoe2012

    Android 腾讯微博客户端源码1.zip

    【Android腾讯微博客户端源码1.zip】是一个包含Android应用项目的源码包,主要涉及的是腾讯微博的客户端实现。这个源码对于开发者来说是一份宝贵的参考资料,可以用于学习和理解Android应用开发,特别是针对社交网络...

    [腾讯微博Android客户端开发]课程文档及源代码

    7. **微博功能实现**:具体到腾讯微博,课程会讲解如何实现登录、发布、浏览和评论微博,以及关注和分享等功能。这涉及到了OAuth认证、JSON解析和UI绑定等技术。 8. **性能优化**:学习如何进行内存管理,避免内存...

    3.腾讯微博Android客户端开发——签名、辅助、辅助方法编写

    ### 腾讯微博Android客户端开发之签名、辅助与辅助方法编写 #### 一、引言 在开发腾讯微博Android客户端的过程中,一个重要的环节就是实现API接口的安全访问,特别是通过OAuth认证机制确保数据的安全性和用户的隐私...

    2011年沈大海讲师Android的腾讯微博客户端认证源代码

    "2011年沈大海讲师Android的腾讯微博客户端认证源代码" 这个标题表明这是一个关于2011年由讲师沈大海分享的Android平台上的腾讯微博客户端的源代码项目。其中,"腾讯微博客户端"是指一个应用,它允许用户在Android...

    腾讯微博分享

    腾讯微博分享是社交媒体平台腾讯微博的一项关键功能,它允许用户将文字、图片、视频等内容发布到自己的微博上,并能够一键分享到其他社交网络,与朋友们进行互动和信息传播。在这个场景下,涉及到的主要知识点包括:...

    新浪以及腾讯微博绑定

    在移动应用开发中,将应用与社交媒体平台如新浪和腾讯微博进行绑定,是提升用户体验、增加用户参与度和分享功能的重要手段。本文将详细介绍如何在你的应用中实现新浪及腾讯微博的绑定,并讨论相关的技术要点。 一、...

Global site tag (gtag.js) - Google Analytics