前言:微博作为新兴的一项网络工具,在某种意义上讲实现了把世界变小的作用。足不出户,也变成了现实。作为程序员我们更加关注的是为我所用。幸好的是微博运行商为我们提供了丰富的接口,我们可以善用这些接口。首先我们正式进入微博,第一部就是获取认证。
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。
下面废话不多说,直接进入今天的主题:如何实现新浪微博的Oauth2.0认证以及自动登录
1.首先下载新浪最新SDK文档,下载地址如下:
http://code.google.com/p/android-weibo-sdk/downloads/list
下贼个东东weibo_sdk_source_code_20120322.zip
里面有2个项目com_weibo_android(引用项目isLibrary)和com_weibo_android_example(例子项目,要引用com_weibo_android)
(右键例子项目)选择properties---android---点击下面的Add选择引用项目即可。
2.在新浪微博开发平台,创建一个应用,获得AppKey和AppSecret替换到例子项目的AppKey和AppSecret,
重要一点,要在开发平台---我的应用中---应用信息---高级信息里面填写应用回调页(这个可以任意写)
3.在AuthorizeActivity中替换掉AppKey和AppSecret
然后填写应用回调页要和上面的一致,必须填写
//Oauth2.0
//隐式授权认证方式
weibo.setRedirectUrl("http://www.cetetek.com");//此处回调页内容应该替换为与appkey对应的应用回调页
//对应的应用回调页可在开发者登陆新浪微博开发平台之后,
//进入我的应用--应用详情--应用信息--高级信息--授权设置--应用回调页进行设置和查看,
//应用回调页不可为空
4.这样就可以进行授权登录了,登录成功还可以进行分享微博,这是sdk中自带的方法。
OK,完成上面几步,其实example就可以跑起来了,不过这个DEMO始终都需要先进行认证,然后再进行后续一些发微博等API操作,而我们希望在第一次认证通过之后,以后直接就登录不用再进行认证操作,那该如何实现?
看example的这段代码
class AuthDialogListener implements WeiboDialogListener {
@Override
public void onComplete(Bundle values) {
String token = values.getString("access_token");
String expires_in = values.getString("expires_in");
mToken.setText("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(AuthorizeActivity.this, TestActivity.class);
startActivity(intent);
}
在认证成功后,关键在于保存access_token字段的值,然后构造AccessToken对象,最后调用Weibo.setAccessToken方法后,后续即可进行相关API调用操作。很自然而然的我们想到这么做:认证成功后,用数据库或是SharePreference保存access_token值,每次进入应用的时候判定是否保存该值,如果是的话直接取出access_token值,构造AccessToken对象并Weibo.setAccessToken。
于是就有了以下登录代码段的臆想:
String token = AuthoSharePreference.getToken(this);
AccessToken accessToken = new AccessToken(token, WeiboConstParam.CONSUMER_SECRET);
Weibo.getInstance().setAccessToken(accessToken);
不过光这么做可不够,后续调API操作还是会失败,上网搜了搜找到答案
加上Utility.setAuthorization(newOauth2AccessTokenHeader());就可以了,这是用来设置Oauth2类型的,具体原因不详,反正就这么着。
完整代码如下:
public void login()
{
Utility.setAuthorization(new Oauth2AccessTokenHeader());
String token = AuthoSharePreference.getToken(this);
AccessToken accessToken = new AccessToken(token, WeiboConstParam.CONSUMER_SECRET);
Weibo.getInstance().setAccessToken(accessToken);
goPlayActivity();
}
到此关于新浪微博Oauth2.0的认证以及登录问题已解决,不过话说回来,这个写新浪SDK的家伙真尼玛坑爹,写个SDK把界面的东东都放进去,然后很多接口都是有用到SDK里的资源,使得我们的工程不得不依赖SDK工程而不能直接用导入jar包方式使用。
原本想把com_weibo_android的src打了个jar包,然后添加到自己的工程链接里,但是发现认证那块变得好麻烦,具体看这篇博文:http://www.cnblogs.com/hll2008/archive/2011/04/30/2033481.html
反正没折腾出来,以后有时间再研究研究吧。。。
最后贴上DEMO效果图:
这是未经过认证时的界面:
然后进入认证界面
认证通过后进入发微博界面
退出程序后再次进入,这时直接登录即可
最后附上工程链接:http://download.csdn.net/detail/geniuseoe2012/4417782
里面有两个工程·文件com_weibo_android和TestWeiboDemo
前面那个是作为链接库,后面是demo
大家使用demo的时候注意修改WeiboConstParam.java文件
public interface WeiboConstParam {
String CONSUMER_KEY = "-----"; // appkey
String CONSUMER_SECRET = "------"; // secret
String REDIRECT_URL = "-----------"; // url回调地址
}
相应值改成自个儿的就可以了
最后再说个问题,Oauth认证得到的Access_token 值有过期时间,未审核的应用为一天,已审核的为一周
本例没有作过期判断,童鞋们可自行添加判断过期后执行再次认证的过程
好了,时间不早了,今天先这样吧。。。
以后再给大伙儿补上微博其它课程。。。
分享到:
相关推荐
RT,使用WebView实现新浪微博Oauth2.0认证,非截取html代码获取验证码 界面跳转无副作用
新浪微博oauth认证源码,只要加入开发者自己的key与secret即可通过认证,进行相应的开发
最近做了新浪微博分享,在网上找了一个 是Oauth1.0的 但是在过不了多少天Oauth1.0 就用不了,就在做了Oauth2.0的图片和文字分享。
OAuth2.0授权机制我在这里就不浪费口舌了,有很多大牛都发表过相关的文章解释OAuth2.0认证的流程。这个demo很简单,很容易给初学者理解,给一些初学者参考学习学习。
实现了Oauth2.0授权逻辑 授权 登陆 发表 图片 gps
android Oauth1.0分享微博 好像9月份以后就不能用了,项目现在需要分享微博。本来以前朋友做了一个Oauth1.0, 自己现在弄集成SDK分享新浪微博Oauth2.0
主要为大家详细介绍了Android仿新浪微博oauth2.0授权界面实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
API说明文档:包括微博相关API,公共服务API,地理信息API。针对API您还可以在文档调用页进行评分和反馈,便于我们更好地为您提供接口支持。
增加了GPS和 Google map显示功能 优化的整体架构 实现了话题显示 实现了在微博应用中嵌入游戏项目(NDK开发的) 完全使用Oauth方式实现用户认证 如有问题请关注 weibo.com/shunfengche
1.授权认证:Oauth2.0认证流程 2.服务器访问操作流程 3.新浪微博SDK和腾讯微博SDK 4.HMAC加密算法 5.SQLite数据库相关操作 6.字符串处理,表情识别 7.JSON解析,XML解析:超链接解析,时间解析等 8.Android ...
1.预先导入com_weibo_android做为引用库工程 2.右键MyWeiboDemo->Properties->Android->library:add(界面右下方)-选择com_weibo_android工程 3.运行 提示:项目默认sdcard目录下已经存在Pictures目录,若没有,请...
本文介绍了移动电子商务、Android开发平台及微博开发平台相关技术,分析了电子商务、Android手机平台和微博系统在当前国内外应用情况,并设计了基于新浪微博的移动电子商务系统Android客户端软件,实现了登录注册...
授权 目前支持 微信/QQ/新浪微博,客户端只需要配置APPID(新浪微博) 分享 目前支持 微信(会话/朋友圈/收藏),QQ/QZone,新浪微博 支付 目前支持 支付宝/微信支付 对于授权与分享,客户端不用配置APPSECRET,只需要要...
微博官方SDK,提供了在 Windows Azure Mobile Service 中使用微博账号授权登陆(OAuth2.0)的功能,帮助开发者轻松快捷地完成微博授权登陆功能的开发,具有跨平台,集成简单等优势。 此SDK需要结合 Windows Azure ...
因为这个程序在接近尾声的时候新浪停止了原来的oauth1.0授权,这就意味着我的程序不能授权不能登录,而且oauth1.0授权方式登录后请求数据接口的方法和oauth2.0的不同,这就意味着我还得修改登录后请求数据的方式,这...