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

android 新浪微博分享功能实现

阅读更多
新浪微博分享功能 



注册帐号后,创建应用后,会得到一个唯一的key和secret,如下图







我在工程中使用的是Oauth2.0隐式授权方式,所以需要在新浪微博开发者平台重定义地址,如下图







需要在工程中加入新浪微博demo中com.weibo.net里面的内容,如下图







需要修改Weibo.java里面的代码

    private static String APP_KEY = "";

private static String APP_SECRET = "";

将里面的内容替换成你创建项目时候生成的key和secret

public staticfinal String DEFAULT_REDIRECT_URI = "";

这里也要重新设置成你之前重定义的地址



具体可参考新浪微博的例子



自己封装了一个调用新浪微博的类  SinaWeiboUtil



public class SinaWeiboUtil {



    private SinaWeiboRequestListener mWeiboRequestListener;



    private TestActivity mActivity;



    private static SinaWeiboUtil instance;

  

    public static SinaWeiboUtil getInstance() {

       return instance;

    }

  

    public static void createInstance(TestActivity activity) {

       instance = new SinaWeiboUtil(activity);

    }

  

    private SinaWeiboUtil(TestActivity activity) {

       mActivity = activity;

    }

  

    public void sendSinaWeibo() {

       Weibo weibo = Weibo.getInstance();

       if (AppConst.WACCESSTOKEN != null) {

           weibo.setRedirectUrl(Weibo.DEFAULT_REDIRECT_URI);// 此处回调页内容应该替换为与appkey对应的应用回调页

           AccessToken accessToken = new AccessToken(AppConst.WACCESSTOKEN,

                  Weibo.getAppSecret());

           weibo.setAccessToken(accessToken);

           accessToken.setExpiresIn("86400");

           try {

              Log.v("tag==========", "secret =" + Weibo.getAppSecret()

                     + " token =" + Weibo.getAppKey());

              update(weibo, Weibo.getAppKey(), mActivity

                     .getResources().getString(R.string.smscontent), "", "");

           } catch (MalformedURLException e) {

              // TODO Auto-generatedcatch block

              e.printStackTrace();

           } catch (NotFoundException e) {

              // TODO Auto-generatedcatch block

              e.printStackTrace();

           } catch (IOException e) {

              // TODO Auto-generatedcatch block

              e.printStackTrace();

           } catch (WeiboException e) {

              // TODO Auto-generatedcatch block

              e.printStackTrace();

           }

       } else {

         

           // Oauth2.0

           // 隐式授权认证方式

           weibo.setRedirectUrl(Weibo.DEFAULT_REDIRECT_URI);// 此处回调页内容应该替换为与appkey对应的应用回调页

           // 对应的应用回调页可在开发者登陆新浪微博开发平台之后,

           // 进入我的应用--应用详情--应用信息--高级信息--授权设置--应用回调页进行设置和查看,

           // 应用回调页不可为空

           weibo.authorize(mActivity,

                  new SinaAuthDialogListener(mActivity));

       }

    }



    public void update(Weibo weibo, String source, String status,

           String lon, String lat) throws MalformedURLException,IOException,

           WeiboException {

       WeiboParameters bundle = new WeiboParameters();

       bundle.add("source", source);

       bundle.add("status", status);

       if (!TextUtils.isEmpty(lon)) {

           bundle.add("lon", lon);

       }

       if (!TextUtils.isEmpty(lat)) {

           bundle.add("lat", lat);

       }

       String url = Weibo.SERVER + "statuses/update.json";

       AsyncWeiboRunner weiboRunner = new AsyncWeiboRunner(weibo);

       if (mWeiboRequestListener == null) {

           mWeiboRequestListener = new SinaWeiboRequestListener(mActivity);

       }

       weiboRunner.request(mActivity, url, bundle, Utility.HTTPMETHOD_POST,

              mWeiboRequestListener);

    }

}



新浪微博认证对话框接口

SinaAuthDialogListener

public class SinaAuthDialogListenerimplements WeiboDialogListener {



    TestActivity mActivity;

  

    public SinaAuthDialogListener(TestActivity activity) {

       mActivity = activity;

    }

  

    @Override

    public void onComplete(Bundle values) {

       String token = values.getString("access_token");

       String expires_in = values.getString("expires_in");

       mActivity.setWAccessToken(token);

       Weibo.getInstance();

       AccessToken accessToken = new AccessToken(token,

              Weibo.getAppSecret());

       accessToken.setExpiresIn(expires_in);

       Weibo.getInstance().setAccessToken(accessToken);

       try {

           SinaWeiboUtil.getInstance().update(Weibo.getInstance(),Weibo.getAppKey(), mActivity

                  .getResources().getString(R.string.smscontent), "", "");

       } catch (MalformedURLException e) {

           // TODO Auto-generatedcatch block

           e.printStackTrace();

       } catch (NotFoundException e) {

           // TODO Auto-generatedcatch block

           e.printStackTrace();

       } catch (IOException e) {

           // TODO Auto-generatedcatch block

           e.printStackTrace();

       } catch (WeiboException e) {

           // TODO Auto-generatedcatch block

           e.printStackTrace();

       }

    }



    @Override

    public void onError(DialogError e) {

       Toast.makeText(mActivity, "Autherror : " + e.getMessage(),

              Toast.LENGTH_LONG).show();

    }



    @Override

    public void onCancel() {

       Toast.makeText(mActivity, "Authcancel", Toast.LENGTH_LONG).show();

    }



    @Override

    public void onWeiboException(WeiboException e) {

       Toast.makeText(mActivity, "Authexception : " + e.getMessage(),

              Toast.LENGTH_LONG).show();

    }



}



新浪微博请求接口 SinaWeiboRequestListener

public class SinaWeiboRequestListenerimplements RequestListener {



    private TestActivity mActivity;

  

    public SinaWeiboRequestListener(TestActivity activity) {

       mActivity = activity;

    }

  

    @Override

    public void onComplete(String response) {

       mActivity.runOnUiThread(new Runnable() {



           @Override

           public void run() {

              Toast.makeText(mActivity, R.string.send_sucess,

                     Toast.LENGTH_LONG).show();

           }

       });

    }



    @Override

    public void onIOException(IOException e) {

       // TODO Auto-generatedmethod stub



    }



    @Override

    public void onError(final WeiboException e) {

       mActivity.runOnUiThread(new Runnable() {



           @Override

           public void run() {

              Toast.makeText(

                     mActivity,

                     String.format(

                            mActivity.getString(R.string.send_failed)

                                   + ":%s", e.getMessage()),

                     Toast.LENGTH_LONG).show();

           }

       });



    }



}



需要在MainFest中加入以下权限

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

    </uses-permission>

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

    </uses-permission>

    <uses-permission android:name="android.permission.WRITE_APN_SETTINGS">

    </uses-permission>

    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE">

    </uses-permission>

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">

    </uses-permission>
分享到:
评论
1 楼 s1248162653 2012-04-24  
第一次分享验证用户名密码成功,但退出程序之后,再次运行程序,不再输入用户名密码进行验证,直接自己new AccessToken,再weibo.setAccessToken(accessToken);  分享时总是分享不成功,提示auth failed错误,这是怎么回事呢,不知道你有没有碰到这个错误?

相关推荐

    Android新浪微博分享

    本文将详细介绍如何在Android应用中集成新浪微博分享功能,包括授权认证和内容分享的具体步骤。 首先,我们需要在新浪开放平台(http://open.weibo.com/)注册开发者账号,创建一个新的应用,获取到App Key、App ...

    android 新浪微博分享功能开发

    在Android平台上实现新浪微博分享功能,是一项常见的社交网络集成任务。开发者常常需要将应用程序中的内容,如文本、图片、链接等,推送到新浪微博平台,以便用户能够与他们的社交圈子分享。以下是一个简化的教程,...

    Android新浪微博分享SDK

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

    Android 新浪微博客户端

    【Android 新浪微博...总的来说,Android 新浪微博客户端是Android开发技术和社交媒体服务的结合体,它的设计和实现涵盖了移动应用开发的多个关键方面。通过不断的优化和改进,它为用户提供了便捷、高效的微博体验。

    Android新浪微博完整例子

    这个项目"Android新浪微博完整例子"是一个很好的实践,可以帮助开发者深入理解Android应用开发的全貌,从用户交互到后端数据处理的每一个环节。通过学习和分析这个项目,开发者可以提升自己的技能,为未来更复杂的...

    android新浪微博demo

    "android新浪微博demo"是一个实例项目,展示了如何在Android应用中集成新浪微博的功能,并提供了许多微博特效的实现,这对于开发者来说是一个很好的学习和参考资源。这个项目要求将SDK升级至版本24,这意味着它可能...

    实现新浪微博分享功能

    总的来说,实现新浪微博分享功能涉及多个步骤,包括SDK的集成、用户授权、构建分享内容、调用API以及处理回调。通过这些步骤,你可以为用户提供一个无缝的分享体验,使他们能方便地将应用内的内容分享到自己的微博...

    新浪微博分享 sdk Android代码

    6. **分享功能实现** - **文本分享**:通过`WeiboShareAPI`的`shareText`方法,传入要分享的文字内容。 - **图片分享**:可以分享本地图片或网络图片,使用`WeiboShareAPI`的`shareImage`方法,传入图片路径或...

    android新浪微博SDK精简版

    本文将详细探讨“Android新浪微博SDK精简版”,并基于提供的链接——http://blog.csdn.net/u013091130/article/details/49466187,解析SDK的使用方法以及关键功能的实现。 首先,了解微博SDK的基本概念。SDK是软件...

    新浪微博分享demo

    这个demo旨在帮助开发者理解并实现如何在Android应用中集成新浪微博分享功能,使得用户可以方便地将内容分享到自己的新浪微博账号。 一、微博SDK介绍 微博SDK(Software Development Kit)是新浪微博提供给开发者...

    Android新浪微博客户端

    Android新浪微博客户端是一款基于Android操作系统开发的应用程序,允许用户在移动设备上浏览、发布、分享微博,与其他用户进行互动。该客户端在2011年5月12日进行了更新,可能包含了当时的最新功能和优化,旨在提供...

    Android APP集成新浪微博分享功能

    本文将详细介绍Android APP集成新浪微博分享功能的实现步骤和相关知识点。 一、下载新浪微博Android SDK 要集成新浪微博分享功能,首先需要下载新浪微博Android SDK。下载完成后,将libweibosdkcore.jar文件导入到...

    android新浪微博客户端

    本篇文章将围绕“android新浪微博客户端”这一主题,深入探讨如何实现发表、评论、转发等功能,并对完善主页界面进行详尽解析。 首先,构建Android新浪微博客户端的核心在于对接新浪的开放API。这需要开发者注册...

    Android最新版新浪微博

    本文将深入探讨Android最新版新浪微博的特点、功能及其在技术实现上的亮点。 首先,Android版新浪微博的界面设计注重用户体验,采用简洁明快的UI布局,使得用户能够快速找到并操作各种功能。在信息流展示上,采用...

    新浪微博分享文档

    总的来说,这个“新浪微博分享文档”是一套全面的开发指南,帮助开发者成功地在Android应用中集成微博功能,实现内容分享,同时处理认证和签名等关键环节。对于想要提升用户体验,增加社交互动性的应用来说,这是不...

    新浪微博客户端 android平台新浪微博客户端

    "android"标签明确了讨论的焦点在于Android技术,而“新浪微博”则再次确认了这是关于新浪微博的应用程序,特别是其在Android生态中的实现。这意味着我们会探讨如何在Android设备上安装、使用以及可能遇到的技术问题...

    android新浪微博Oauth2.0分享文字和图片

    本文将深入探讨如何在Android应用中实现基于Oauth2.0的新浪微博文字和图片分享功能。 首先,我们需要理解Oauth2.0的基本原理。Oauth2.0是一种授权框架,它允许第三方应用在用户授权的情况下访问特定资源,而无需...

    android 新浪微博授权和分享

    通过以上步骤,你可以在Android应用中实现对新浪微博的授权登录和内容分享功能。注意,实际开发时还需要考虑错误处理、用户界面设计、网络状态检查等因素,确保良好的用户体验。同时,由于API接口可能会有更新,建议...

Global site tag (gtag.js) - Google Analytics