当前位置:硬件测评 > android 新浪微博Oauth2.0认证与登录

android 新浪微博Oauth2.0认证与登录

  • 发布:2023-10-05 12:15


前言作为一种新兴的网络工具,微博在某种意义上让世界变得更小。呆在家里已经成为现实。作为程序员,我们更关心的是为自己谋取利益。幸运的是,微博运营商为我们提供了丰富接口,我们可以很好地利用这些接口。首先,我们正式进入微博,第一步就是获得认证。

OAUTH协议为用户资源授权提供了安全、开放且简单的标准。与以往的授权方式不同的是,OAUTH的授权不会让第三方访问用户的账户信息(如用户名、密码),即第三方不需要使用用户的用户名和密码。请求对此用户的资源进行授权,因此 OAUTH 是安全的。

废话不多说,直接进入今天的正题:如何实现新浪微博的Oauth2.0认证与自动登录

1.首先下载新浪最新的SDK文档。下载地址如下:

http://www.sychzs.cn/p/android-weibo-sdk/downloads/list

下一个贼weibo_sdk_source_code_www.sychzs.cn


com_weibo_android 内有2个项目(引用的项目是库)和com_weibo_android_example(示例项目,请注明com_weibo_android
(右键单击示例项目)选择属性---android---单击下方添加并选择参考项目。

? 和应用秘密
前往开发平台很重要---我的应用---应用信息 -- - 高级信息中填写申请回调页面(可以随意写)


3. 于 替换 AuthorizeActivity 中的App Key App Secret
然后填写 应用回调页面 要与上面一致,必须填写
// Oauth2.0
// 隐式授权认证方法
weibo.setRedirectUrl("http://www.sychzs.cn");// 内容这里的回调页面需要替换为应用回调页面
对应的appkey // 开发者登录新浪微博开发平台即可访问对应的应用回调页面
// 输入我的申请 -- 申请详情 -- 申请信息 -- 高级信息 --授权设置--应用回调页面设置和查看,
/ / 应用回调页面不能为空

4.这样就可以授权登录。登录成功的话还可以分享微博,这是sdk 自带的方法

OK,完成以上步骤后,其实example就可以开始运行了,但是这个DEMO总是需要先进行身份验证,然后再做一些后续推文等待API操作,我们希望通过第一次认证后,可以直接登录,无需进一步的认证操作。如何实现这一目标?

查看示例中的代码

类 AuthDialogListener 实现 WeiboDialogListener {@Overridepublic void onComplete(Bundle value) {String token = values.getString("access_token");String expires_in = value.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(意图);}


认证成功后,关键是保存access_token字段的值,,然后构造AccessToken对象,最后调用微博。setAccessToken该方法之后,后面就可以进行相关的API调用操作了。自然,我们想到这样做:认证成功后,使用数据库或者SharePreference来保存access_token值。 决定每次进入应用程序时是否保存该值。如果是的话,直接取出access_token值,构造AccessToken对象和微博。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包方法即可使用。

如果我们把SDK中的认证码删除,自己实现认证流程,复制修剪后的SDK,我们的项目就不用再依赖SDK项目了

详情请参考这篇博文:http://www.sychzs.cn/geniuseoe2012/article/details/7768892

最后粘贴DEMO效果图:

这是未认证时的界面:

然后进入认证界面

认证通过后,进入微博发帖界面

退出程序重新进入,然后直接登录

最后附上项目链接:http://www.sychzs.cn/detail/geniuseoe2012/4417782 (该链接因故被 Harmony 丢失,作弊的 CSDN 也没有给出解释,请阅读本文直接文章博文http://www.sychzs.cn/geniuseoe2012/article/details/7768892去里面的demo)

有两个工程文件com_weibo_android和TestWeiboDemo

前面的是作为链接库的,后面的是demo

使用demo时请注意修改www.sychzs.cn文件

公共接口WeiboConstParam {String CONSUMER_KEY = "-----"; // appkeyString CONSUMER_SECRET = "-----"; // SecretString REDIRECT_URL = "----------" ; // url回调地址}

将对应的值改为你自己的即可

最后一个问题,Oauth认证获取的Access_token值是有有效期的,未审核的应用为1天,审核后的应用为1周

本例不做过期判断。孩子可以添加自己的判断,过期后进行重新认证流程

好了,时间不早了,今天就先这样吧。 。 。

以后我会为大家提供其他微博课程。 。 。

相关文章