由于新浪微博的认证已经更新到OAuth2.0,以前的有些东西已不能使用,在网上找的资料大多都是基于1.0的认证,故只能自己摸索,现把DEMO分享出来给大家共享。这里注意,该DEMO只是初步实现了发新微博,转发微博,评论微博和查询最新的微博的功能,和实际项目还有很大差距,我直接使用了新浪微博提供的SDK,大牛们可以直接无视掉了,呵呵

先说一下新浪微博的SDK的导入吧,新浪微博的SDK是源码方式开放的,和我们平时使用的有些不一样,我在这里卡了很久,当然和我没仔细看SDK的文档有关系,为了减少大家走的弯路,这里着重提一下。导入步骤如下:

1)新浪微博官方的SDK包中一般有2个目录,一个是SDK的源码包(此包中有Android平台微博SDK说明文档),另一个是例子。首先需要将源码包导入到eclipse中。SDK工程的编码格式为UTF-8。

 2)在需要集成新浪微博SDK包的工程项目中添加Library,右键 -> Properties -> Android。设置Library属性。

下面说下如何认证,里面的代码大部分用的是新浪提供的例子

[html] view plain copy print ?
  1. private static final String CONSUMER_KEY = "*******";// 替换成你自己申请的KEY
  2. private static final String CONSUMER_SECRET = "**************************"; // 替换陈你自己申请的SECRET
  3. Weibo weibo = Weibo.getInstance();
  4. weibo.setupConsumerConfig(CONSUMER_KEY, CONSUMER_SECRET);
  5. // Oauth2.0 隐式授权认证方式
  6. weibo.setRedirectUrl("http://www.sina.com");// 此处使用的URL必须和新浪微博上应用提供的回调地址一样
  7. weibo.authorize(OAuthWeiboActivity.this, new AuthDialogListener());
private static final String CONSUMER_KEY = "*******";// 替换成你自己申请的KEY
private static final String CONSUMER_SECRET = "**************************"; // 替换陈你自己申请的SECRET
Weibo weibo = Weibo.getInstance();
weibo.setupConsumerConfig(CONSUMER_KEY, CONSUMER_SECRET);
// Oauth2.0 隐式授权认证方式
weibo.setRedirectUrl("http://www.sina.com");// 此处使用的URL必须和新浪微博上应用提供的回调地址一样
weibo.authorize(OAuthWeiboActivity.this, new AuthDialogListener());

对于Mobile客户端应用来说,是不存在Server的,故此处的应用回调页地址只要与新浪微博开放平台->我的应用->应用信息->高级应用->授权设置->应用回调页中的url地址保持一致就可以了。

以下代码实现WeiboDialogListener接口,授权成功后可在onComplete函数中获得AccessToken信息。具体如何保存、使用AccessToken信息由开发者自行处理,比如存放在SharedPreferences中,但是AccessToken的有效期有限制,一般正常情况下是7天存活期,过期后需要重新获得。

[html] view plain copy print ?
  1. class AuthDialogListener implements WeiboDialogListener
  2. {
  3. @Override
  4. public void onComplete(Bundle values) {
  5. String token = values.getString("access_token");
  6. String expires_in = values.getString("expires_in");
  7. Log.i(“info”,"access_token : " + token + "  expires_in: " + expires_in);
  8. AccessToken accessToken = new AccessToken(token, CONSUMER_SECRET);
  9. accessToken.setExpiresIn(expires_in);
  10. Weibo.getInstance().setAccessToken(accessToken);
  11. Intent intent = new Intent();
  12. intent.setClass(OAuthWeiboActivity.this, MySinaWeiboActivity.class);
  13. startActivity(intent);
  14. }
  15. @Override
  16. public void onError(DialogError e) {
  17. Toast.makeText(getApplicationContext(), "Auth error : " + e.getMessage(),
  18. Toast.LENGTH_LONG).show();
  19. }
  20. @Override
  21. public void onCancel() {
  22. Toast.makeText(getApplicationContext(), "Auth cancel", Toast.LENGTH_LONG).show();
  23. }
  24. @Override
  25. public void onWeiboException(WeiboException e) {
  26. Toast.makeText(getApplicationContext(), "Auth exception : " + e.getMessage(),
  27. Toast.LENGTH_LONG).show();
  28. }
  29. }
class AuthDialogListener implements WeiboDialogListener
{@Overridepublic void onComplete(Bundle values) {String token = values.getString("access_token");String expires_in = values.getString("expires_in");Log.i(“info”,"access_token : " + token + "  expires_in: " + expires_in);AccessToken accessToken = new AccessToken(token, CONSUMER_SECRET);accessToken.setExpiresIn(expires_in);Weibo.getInstance().setAccessToken(accessToken);Intent intent = new Intent();intent.setClass(OAuthWeiboActivity.this, MySinaWeiboActivity.class);startActivity(intent);}@Overridepublic void onError(DialogError e) {Toast.makeText(getApplicationContext(), "Auth error : " + e.getMessage(),Toast.LENGTH_LONG).show();}@Overridepublic void onCancel() {Toast.makeText(getApplicationContext(), "Auth cancel", Toast.LENGTH_LONG).show();}@Overridepublic void onWeiboException(WeiboException e) {Toast.makeText(getApplicationContext(), "Auth exception : " + e.getMessage(),Toast.LENGTH_LONG).show();}}

发新微博

[html] view plain copy print ?
  1. private String update(Weibo weibo, String source, String status, String lon, String lat)
  2. throws WeiboException {
  3. WeiboParameters bundle = new WeiboParameters();
  4. bundle.add("status", status);
  5. if (!TextUtils.isEmpty(lon)) {
  6. bundle.add("lon", lon);
  7. }
  8. if (!TextUtils.isEmpty(lat)) {
  9. bundle.add("lat", lat);
  10. }
  11. String rlt = "";
  12. String url = Weibo.SERVER + "statuses/update.json";
  13. rlt = weibo.request(this, url, bundle, Utility.HTTPMETHOD_POST, weibo.getAccessToken());
  14. return rlt;
  15. }
private String update(Weibo weibo, String source, String status, String lon, String lat)throws WeiboException {WeiboParameters bundle = new WeiboParameters();bundle.add("status", status);if (!TextUtils.isEmpty(lon)) {bundle.add("lon", lon);}if (!TextUtils.isEmpty(lat)) {bundle.add("lat", lat);}String rlt = "";String url = Weibo.SERVER + "statuses/update.json";rlt = weibo.request(this, url, bundle, Utility.HTTPMETHOD_POST, weibo.getAccessToken());return rlt;}

转发微博

[html] view plain copy print ?
  1. private String repost(String str, String id) throws MalformedURLException, IOException, WeiboException
  2. {
  3. String url = Weibo.SERVER + "statuses/repost.json";
  4. WeiboParameters bundle = new WeiboParameters();
  5. bundle.add("id", id);
  6. bundle.add("status", str);
  7. String rlt = weibo.request(RepostWeiboActivity.this, url, bundle, "POST", weibo.getAccessToken());
  8. return rlt;
  9. }
 private String repost(String str, String id) throws MalformedURLException, IOException, WeiboException{String url = Weibo.SERVER + "statuses/repost.json";WeiboParameters bundle = new WeiboParameters();bundle.add("id", id);bundle.add("status", str);String rlt = weibo.request(RepostWeiboActivity.this, url, bundle, "POST", weibo.getAccessToken());return rlt;}

评论微博

[html] view plain copy print ?
  1. private String comment(String id) throws MalformedURLException, IOException, WeiboException
  2. {
  3. String url = Weibo.SERVER + "comments/create.json";
  4. WeiboParameters bundle = new WeiboParameters();
  5. bundle.add("comment", "测试");
  6. bundle.add("id", id);
  7. String rlt = weibo.request(CommentWeiboActivity.this, url, bundle, "POST", weibo.getAccessToken());
  8. eturn rlt;
  9. }
private String comment(String id) throws MalformedURLException, IOException, WeiboException
{String url = Weibo.SERVER + "comments/create.json";         WeiboParameters bundle = new WeiboParameters();bundle.add("comment", "测试");bundle.add("id", id);String rlt = weibo.request(CommentWeiboActivity.this, url, bundle, "POST", weibo.getAccessToken());eturn rlt;
}

查询最新的微博

[html] view plain copy print ?
  1. private String getPublicTimeline() throws MalformedURLException, IOException, WeiboException
  2. {
  3. String url = Weibo.SERVER + "statuses/public_timeline.json";
  4. WeiboParameters bundle = new WeiboParameters();
  5. bundle.add("count", "1");
  6. String rlt = weibo.request(QueryWeiboActivity.this, url, bundle, "GET", weibo.getAccessToken());
  7. return rlt;
  8. }
 private String getPublicTimeline() throws MalformedURLException, IOException, WeiboException{String url = Weibo.SERVER + "statuses/public_timeline.json";WeiboParameters bundle = new WeiboParameters();bundle.add("count", "1"); String rlt = weibo.request(QueryWeiboActivity.this, url, bundle, "GET", weibo.getAccessToken());return rlt;}

差不多就这些了,其他的没继续研究,还有返回的JSON的数据如何处理这里都没有处理,等有空再研究下

DEMO下载地址:http://download.csdn.net/detail/zingck/4174074

转贴请保存源地址:http://blog.csdn.net/zingck/article/details/7395539

Android上开发新浪微博OAuth2.0认证相关推荐

  1. android新浪微博Oauth2.0认证以及登录

    前言:微博作为新兴的一项网络工具,在某种意义上讲实现了把世界变小的作用.足不出户,也变成了现实.作为程序员我们更加关注的是为我所用.幸好的是微博运行商为我们提供了丰富的接口,我们可以善用这些接口.首先 ...

  2. android 新浪微博Oauth2.0认证以及自定义webview认证

    首先不得不说,自己犯了一个比较窝囊的错误,不过也不能完全怪我,因为大家都知道,新浪微博Oauth2.0提供的jar包,好家伙2M多,谁看谁都不想用,才使得我去研究1.0的使用,研究好久,终于实现可用了 ...

  3. 新浪微博OAuth2.0认证理解

    学习网络和程序也有一段时间了,但是真枪实弹的干还是没有好好的重试过,导致应聘软件实习生一次次被拒. 看到网上有很多开发开发平台,公司不让我练手,我自己拿自己练手总可以了吧. 大型网站(新浪微博,淘宝, ...

  4. Spring Security OAuth2.0认证授权知识概括

    Spring Security OAuth2.0认证授权知识概括 安全框架基本概念 基于Session的认证方式 Spring Security简介 SpringSecurity详解 分布式系统认证方 ...

  5. Spring Security OAuth2.0认证授权

    文章目录 1.基本概念 1.1.什么是认证 1.2 什么是会话 1.3什么是授权 1.4授权的数据模型 1.4 RBAC 1.4.1 基于角色的访问控制 2.基于Session的认证方式 3.整合案例 ...

  6. SpringSecurity OAuth2.0认证授权-part2

    此篇文章包含oauth2项目搭建.整合jwt.授权方式测试: 篇幅过长,拆分为: part1: 认证授权原理回顾及分布式系统认证方案: part2: oauth2项目搭建.授权方式测试: part3: ...

  7. C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决

            近期在帮人弄一个豆瓣API应用,在豆瓣的OAuth2.0认证过程中遇到了各种问题,同一时候自己须要一个个的尝试与解决,终于完毕了豆瓣API的訪问.作者这里就不再吐槽豆瓣的认证文档了,毕 ...

  8. C# 网络编程之豆瓣OAuth2.0认证详解和遇到的各种问题及解决

            最近在帮人弄一个豆瓣API应用,在豆瓣的OAuth2.0认证过程中遇到了各种问题,同时自己需要一个个的尝试与解决,最终完成了豆瓣API的访问.作者这里就不再吐槽豆瓣的认证文档了,毕竟人 ...

  9. 【django】用户登录模块实现步骤(二)之QQ登录工具AgentLogin和通过OAuth2.0认证获取openid【33】

    一.QQ登录工具AgentLogin 1.AgentLogin介绍 ⽬前只⽀持 腾讯QQ,微信,微博的第三⽅登录 该⼯具封装了QQ登录时对接QQ互联接⼝的请求操作.可⽤于快速实现QQ登录功能. 2.A ...

最新文章

  1. Python语言规范
  2. Ubuntu 18.04 美化mac主题
  3. 笔试题:写一个ArrayList 的动态代理类
  4. nginx之线上CDN的rewrite规则修改
  5. 乒乓球比赛赛程_10月5日至10月11日中央电视台直播录播乒乓球比赛安排
  6. C++关联容器,STL关联容器
  7. FPDF中文应用攻略
  8. kotlin学习笔记-异常好玩的list集合总结
  9. windows系统下,双网卡电脑更改默认路由的命令-转
  10. linux下的文件及目录介绍
  11. openid4java 使用记录[转载]
  12. 重新学习FPGA(一):EDA技术
  13. Android Netd ndc
  14. l298n电机哪一端为正_L298N电机驱动模块的使用方法(干货)
  15. D630,vista sp2,4GB Turbo Memory,ITMService.exe(SmartPinService),Posses lots of CPU Resources
  16. python爬虫--爬取某网站电影下载地址
  17. 第1章 走进Java
  18. 智能家居-电热水器工作原理(转载)
  19. 年薪170万程序员在线征婚为什么会遭嘲讽?
  20. 快速聊天:不用QQ概念版 也能将将QQ好友放到桌面 针对所有windows系统

热门文章

  1. 投资超百亿 新能源“绿岛”项目落户温州洞头
  2. 机械专业应学习Python那个方向
  3. DW文档创建以及标签使用
  4. 【新品发布】MP1013 MiniPCIe CANFD卡,应用于自动化数据采集和测试
  5. GridLayout布局
  6. 一篇文章,采集四个网站,它们是阳光理政,图虫网,书伴网,半次元网
  7. 大数据四大阵营之OLAP阵营
  8. 2020 年 11 月编程语言排行榜,Python 势如破竹,超越 Java?
  9. 关于chart/diagram/drawing/figure/graph/illustration/image/map/picture/plot的辨析
  10. R语言实现LDA主题模型分析网购数据