Android上开发新浪微博OAuth2.0认证
由于新浪微博的认证已经更新到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属性。
下面说下如何认证,里面的代码大部分用的是新浪提供的例子
- 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());
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天存活期,过期后需要重新获得。
- class AuthDialogListener implements WeiboDialogListener
- {
- @Override
- public 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);
- }
- @Override
- public void onError(DialogError e) {
- Toast.makeText(getApplicationContext(), "Auth error : " + e.getMessage(),
- Toast.LENGTH_LONG).show();
- }
- @Override
- public void onCancel() {
- Toast.makeText(getApplicationContext(), "Auth cancel", Toast.LENGTH_LONG).show();
- }
- @Override
- public void onWeiboException(WeiboException e) {
- Toast.makeText(getApplicationContext(), "Auth exception : " + e.getMessage(),
- Toast.LENGTH_LONG).show();
- }
- }
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();}}
发新微博
- 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;
- }
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;}
转发微博
- 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;
- }
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;}
评论微博
- 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;
- }
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;
}
查询最新的微博
- 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;
- }
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认证相关推荐
- android新浪微博Oauth2.0认证以及登录
前言:微博作为新兴的一项网络工具,在某种意义上讲实现了把世界变小的作用.足不出户,也变成了现实.作为程序员我们更加关注的是为我所用.幸好的是微博运行商为我们提供了丰富的接口,我们可以善用这些接口.首先 ...
- android 新浪微博Oauth2.0认证以及自定义webview认证
首先不得不说,自己犯了一个比较窝囊的错误,不过也不能完全怪我,因为大家都知道,新浪微博Oauth2.0提供的jar包,好家伙2M多,谁看谁都不想用,才使得我去研究1.0的使用,研究好久,终于实现可用了 ...
- 新浪微博OAuth2.0认证理解
学习网络和程序也有一段时间了,但是真枪实弹的干还是没有好好的重试过,导致应聘软件实习生一次次被拒. 看到网上有很多开发开发平台,公司不让我练手,我自己拿自己练手总可以了吧. 大型网站(新浪微博,淘宝, ...
- Spring Security OAuth2.0认证授权知识概括
Spring Security OAuth2.0认证授权知识概括 安全框架基本概念 基于Session的认证方式 Spring Security简介 SpringSecurity详解 分布式系统认证方 ...
- Spring Security OAuth2.0认证授权
文章目录 1.基本概念 1.1.什么是认证 1.2 什么是会话 1.3什么是授权 1.4授权的数据模型 1.4 RBAC 1.4.1 基于角色的访问控制 2.基于Session的认证方式 3.整合案例 ...
- SpringSecurity OAuth2.0认证授权-part2
此篇文章包含oauth2项目搭建.整合jwt.授权方式测试: 篇幅过长,拆分为: part1: 认证授权原理回顾及分布式系统认证方案: part2: oauth2项目搭建.授权方式测试: part3: ...
- C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决
近期在帮人弄一个豆瓣API应用,在豆瓣的OAuth2.0认证过程中遇到了各种问题,同一时候自己须要一个个的尝试与解决,终于完毕了豆瓣API的訪问.作者这里就不再吐槽豆瓣的认证文档了,毕 ...
- C# 网络编程之豆瓣OAuth2.0认证详解和遇到的各种问题及解决
最近在帮人弄一个豆瓣API应用,在豆瓣的OAuth2.0认证过程中遇到了各种问题,同时自己需要一个个的尝试与解决,最终完成了豆瓣API的访问.作者这里就不再吐槽豆瓣的认证文档了,毕竟人 ...
- 【django】用户登录模块实现步骤(二)之QQ登录工具AgentLogin和通过OAuth2.0认证获取openid【33】
一.QQ登录工具AgentLogin 1.AgentLogin介绍 ⽬前只⽀持 腾讯QQ,微信,微博的第三⽅登录 该⼯具封装了QQ登录时对接QQ互联接⼝的请求操作.可⽤于快速实现QQ登录功能. 2.A ...
最新文章
- Python语言规范
- Ubuntu 18.04 美化mac主题
- 笔试题:写一个ArrayList 的动态代理类
- nginx之线上CDN的rewrite规则修改
- 乒乓球比赛赛程_10月5日至10月11日中央电视台直播录播乒乓球比赛安排
- C++关联容器,STL关联容器
- FPDF中文应用攻略
- kotlin学习笔记-异常好玩的list集合总结
- windows系统下,双网卡电脑更改默认路由的命令-转
- linux下的文件及目录介绍
- openid4java 使用记录[转载]
- 重新学习FPGA(一):EDA技术
- Android Netd ndc
- l298n电机哪一端为正_L298N电机驱动模块的使用方法(干货)
- D630,vista sp2,4GB Turbo Memory,ITMService.exe(SmartPinService),Posses lots of CPU Resources
- python爬虫--爬取某网站电影下载地址
- 第1章 走进Java
- 智能家居-电热水器工作原理(转载)
- 年薪170万程序员在线征婚为什么会遭嘲讽?
- 快速聊天:不用QQ概念版 也能将将QQ好友放到桌面 针对所有windows系统
热门文章
- 投资超百亿 新能源“绿岛”项目落户温州洞头
- 机械专业应学习Python那个方向
- DW文档创建以及标签使用
- 【新品发布】MP1013 MiniPCIe CANFD卡,应用于自动化数据采集和测试
- GridLayout布局
- 一篇文章,采集四个网站,它们是阳光理政,图虫网,书伴网,半次元网
- 大数据四大阵营之OLAP阵营
- 2020 年 11 月编程语言排行榜,Python 势如破竹,超越 Java?
- 关于chart/diagram/drawing/figure/graph/illustration/image/map/picture/plot的辨析
- R语言实现LDA主题模型分析网购数据