Android客户端接入新浪微博

一、OAuth授权认证

新浪微博之前提供了OAuth和Base OAuth两种认证方式,但自从Twitter只支持OAuth认证方式以来,各大应用都纷纷转向OAuth认证方式,而新浪微博的开放平台也将在近日停止Base OAuth的认证方式。

OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。同样新浪微博通过OAuth认证方式建立了普通新浪微博用户、客户端程序(我们正在开发的这个android客户端程序)、新浪微博三者之间的相互信任关系,让客户端程序不需要知道新浪用户的账号和密码也能在程序中浏览、发布微博,这样有效的保护了用户账号的安全性。

 


二、结合新浪微博,介绍OAuth认证关键字组及其流程

第一组:(App Key和App Secret、CallBackUrl)

第二组:(Request Token和Request Secret)

第三组:(oauth_verifier)

第四组:(user_id、Access Token和Access Secret)

步骤(1):新浪微博的OAuth认证过程,当用户第一次使用本客户端软件时,客户端程序用第一组作为参数向新浪微博发起请求,然后新浪微博经过验证后返回第二组参数给客户端软件同时表示新浪微博信任本客户端软件

步骤(2):当客户端软件获取第二组参数时作为参数引导用户浏览器跳至新浪微博的授权页面,然后用户在新浪的这个授权页面里输入自己的微博账号和密码进行授权,完成授权后根据客户端设定的回调地址把第三组参数返回给客户端软件,并表示用户也信任本客户端软件

步骤(3):接下来客户端软件把第二组参数和第三组参数作为参数再次向新浪微博发起请求,然后新浪微博返回第四组参数给客户端软件。据这3个值直接调用新浪的api接口获取相应用户的信息并进行发微博等操作。第四组参数需要好好的保存进XML,下次使用时便可绕过OAuth认证,直接使用第四组参数值进行微博的相关应用。

 


从这个过程来看用户只是在新浪微博的认证网页输入过账户和密码并没有在客户端软件里输入过账户和密码,客户端软件只保存了第四组数据并没有保存用户的账户和密码,这样有效的避免了账户和密码透露给新浪微博之外的第三方应用程序,保证了安全性。

三:使用新浪微博Android SDK

(2)在http://open.weibo.com/wiki/SDK?retcode=6102#Android上下载新浪微博Android SDK即

(3)将下载的SDK解压后 import进eclipse,若只有项目名上有红色感叹号,删除assets目录下的《Android平台微博SDK说明文档》

(4)在AuthorizeActivity.java中将CONSUMER_KEY和CONSUMER_SECRET分别赋值成App Key,App Secret

(5)将语句 eibo.setupConsumerConfig(CONSUMER_KEY, CONSUMER_KEY);

修改成 weibo.setupConsumerConfig(CONSUMER_KEY, CONSUMER_SECRET);

(6)部署至真机运行,程序成功进入AuthorizeActivit

 

(7) 【完成步骤(1)】

点击oauth键后,AuthorizeActivity 便使用app key, secret,以及callback_url获得oauth token , oauth_token_secret。运行至语句“startActivity(new Intent(Intent.ACTION_VIEW, uri))”;便打开游览器,访问新浪授权页面。


(8) 【完成步骤(2)】接着由用户输入新浪账号密码完成授权。若正确输入新浪账号密码后页面无反应,没有跳转,则改为用Android自带的默认浏览器打开, QQ、UC等游览器容易把跳转至下一个Activity 的intent截段。授权完成后,跳转至下一个Activity(SDK中设置为TestActivity),如下图,这个跳转主要由AuthorizeActivity中的变量URL_ACTIVITY_CALLBACK和程序的AndroidManifest.xml设定。

跳转的原理请详见http://www.cnblogs.com/hll2008/archive/2011/01/09/1931174.html


(9) 【完成步骤(3)】点击TestActivity中的btnGetTimeline键后,运行TestActivity下share2weibo函数,即进入发布新浪微博的页面,事先可以在手机SD卡根目录下放张abc.jpg的图片。发布后,在用户的新浪微博主页即可见到该微博。


总结:

至此,使用新浪提供的SDK中,成功演示了OAuth认证和发布新浪微博的功能。但集成到Android应用中是并不是每一次都要求用户进行授权。解决的方案是当用户打开软件显示载入页面时,开始检查sqlite库中是否已经保存有用户的新浪微博的UserID号、Access Token、Access Secret的记录,如果一条记录都没有那就说明用户是第一次使用本软件,就跳到认证授权页面进行授权认证操作,即从步骤(1)开始,授权后就将获取的这3个值保存到sqlite库中。如果检查sqlite库时发现已经包括了UserID号、Access Token、Access Secret的记录,那么直接读取,然后根据这3个值直接调用新浪的api接口获取相应用户的信息并进行发微博等操作。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值