1、 微博分享功能模块开发攻略 前言 1. 开发该模块准备什么。 2. 这些东西该怎么准备。 3. 了解sdk接口。 (1)咱们能获得什么。 (2)需要咱们提供什么。 (以上仅仅调用接口的一般方法论) 4. 咱们需要完成什么功能(需求),完成这些功能需要什么接口,跳到第3点。 ======================================分割=================================== 1. 开发该模块准备什么与怎么准备 答:我们需要登录该公司的网站,寻找开放平台一项,下载相关的文档资料,通常有sdk和do
2、cs一起绑定下载。同时,我们要需要准备app key和app secret,这两个可以认为是服务器给第三应用方发放的钥匙,可以打开它们的门户,然后才能进行访问(应用权限机制)。拿到app key和app secret的方法一般都是通过登录它们的网站(一般在网站的最底部----开放平台)。 2.了解协议 答:由于第三方访问存在安全和接口不统一,所以需要某种规则或者协议进行数据访问,即通过协议来屏蔽平台的差异,在微博分享开发当中主要的协议有:xauth和oauth协议。 1) OAuth协议: OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不
3、同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。其访问的流程是: 图1 oauth流程图 其中1~3步使用https方式, 第4步使用http方式。 Temporary credentials :临时凭证 Token credentitals :令牌凭证 其中,第三步需要跳转到资源提供方的页面输入用户和密码进行授权认证,然后将access token传到第三方(调用方)的软件。 2) xAuth 协议: xAuth认证是OAuth的
4、简化版,xAuth允许第三方直接用用户的用户名与密码获取access_token,是适合桌面及移动客户端的一种验证方式,由于安全方面的原因,目前仅对符合条件客户端应用开放。(符合条件的客户端要与资源提供方签订协议,在互信的基础上提供访问权限,这个协议也可以达到问责的效果)。 3.了解接口 答:资源提供方一般都有sdk开发包,下来sdk包根据协议或者文档了解就ok。 4.这里以腾讯微薄开发分享功能为例(因为新浪的已经在咱们的项目中得到应用,原理是一样的,其中vancl用的是xauth协议,银泰目前用的是oauth协议): 第一步: 到腾讯微博的网站上的底部,寻找点击“开
5、放平台”一项。 图2 开放平台 点击进入开放平台页面,先用自己的QQ账号登陆然后点击左下角的“我是开发者”,然后注册各种关于应用的信息(如图3),然后提交生成授权的app key 和app secret。 图3 注册信息页面 图4 注册信息完成页面 完成应用信息之后就会跳到图4页面,点击右下角的“查看详情”,就会跳到图5页面。 图5 app key 和app secret 显示页面 通过以上步骤,咱们就拿到了app key 和app secret,然后就可以应用到咱们的程序当中了。 第二步: 点击标题栏的“
6、资源”项(图6)所示,看到里面有资料的介绍,平台说明,api说明 ,sdk下载等,这里找到sdk下载,再找到android sdk(有些只提供java sdk,其实是一样的),然后下载。 第三步: 下载完sdk,根据sdk带的demo找到几个关键类,这里提供一个一般的思路,即根据oauth协议的交互流程来走代码。走一遍下来基本上可以摸清了。 几个关键类: 1. 两个操作类,用来做逻辑处理,这里腾讯提供OAuthClient和T_API等。 2. 一个实体类(bean),用来载参数的,这里腾讯提供OAuth。 首先,使用之前通过注册得到的app key 和app se
7、cret初始化OAuth。设置app key、app secret和回调地址。 关键代码: 参数说明:callback为回调地址,这里设置为:callback="microblog://MyWeibo4Tencent"; 对应于data里面的scheme和host(注意scheme必须是小写?至少腾讯的应用里面这样的) 第二,通过OAuthClient请求未授权的request token。 关键代码: 第三,从OAuth中取得授权的request token。 关键代码: 第四,用request token 发送到服务器,换取access token。(这
8、一步要跳到资源提供方的登录页面输入用户信息登录授权,然后根据之前设定的回调地址返回到相应的activity中,然后自行提取验证码(即oauth_verifier)。 关键代码: 以上代码即可跳到微博官方的授权页面,授权完毕跳转到对应的activity,提取oauth_verifier赋值给oauth。 以下赋值给myOAuth 第五,使用OAuthClient的accessToken方法取得access token secret)。然后将用户授权(access token和access token secret),可以保存起来(实现绑定功能)。 关键代码:
9、 第六步,利用前5步得到的access token和access token secret对该用户的微博进行各种操作,这里使用T_API类的add方法进行微博更新。更多的操作类,请看api说明文档。 关键代码: weibo.add_pic(oauth, format, content, clientip, picPath); weibo是T_API的实例,如果觉得类名不爽(的确很不爽),可以自己简单封装一层。 注意事项: 1. 回调地址务必填写正确,以及xml的配置。 2. Access Token和Access Token Secret永远不会过期,直到用户撤销应用授
10、权或腾讯回收您的app访问权限才会失效(绑定微博功能)。 3. 如果事先已经拿到Access Token 和 Access Token Secret,可以跳过第二步、第三步、第四步而直接初始化OAuth,然后进行微博的相关操作。 附腾讯微博sdk类的简单说明图 Bean图 Util图 附新浪基于xauth协议的分享开发步骤 第一步:使用官方提供的app key和app secret初始化环境。 关键代码: 第二步:取得access token和access token secret,新浪已经将两个参数封装为一个bean类,即AccessTok
11、en. 关键代码: 第三步:使用获得的accessToken发送微博内容,accessToken已经组合到Weibo类里面。 关键代码: 其中ImageItem是新浪提供的封装类,使用之前需要将bitmap转换为byte。 Ps:如果事先已经登录并拿到accessToken,可以直接使用accessToken初始化Weibo实例,然后直接调用api把信息发布到微博上。 关键代码: 至此,已经完成新浪微博分享功能开发工作。 注意事项: 1、 以上关键代码表示初始化环境变量,而且此初始化必须在new weibo() 之前,否则会报错。 2、xa
12、uth协议和oauth协议的app key和app secret不能混用的。 以上代码请参考1.0的demo示例 编者后语: 通过新浪微博(基于Xauth)和腾讯微博(基于OAuth)的分享开发步骤来看,前者的开发轻松多了,而且登录授权页面可以在程序员的控制范围内,步骤也不是很繁琐,但遗憾的是,基于Xauth协议的访问仅仅对一些企业级的开发开发,并要签订相关的协议。无疑,基于OAuth协议是安全的,而且腾讯的工作人员就为什么不提供Xauth协议的访问作出的解释也是出于安全方面的考虑,协议本身就决定了其访问方式的安全了。最后建议大伙在开发微博分享功能的时候,尽量优先选
13、择Xauth协议吧(当然,前提是提供方支持Xauth协议)。这里附带了sina和tencent的demo,仅提供参考。 ======================================分割=================================== 经过对各大平台的分享机制进行分析总结,特此提供1.1版本的代码参考,这里已经将OAuth的请求细节完全屏蔽掉了,大伙只要按照demo的示例传入参数,就可以开发出满意的分享功能。 提供的demo有: 1. 基于Xauth协议新浪微博分享Demo 2. 基于Oauth 1.0协议新浪微博分享Demo 3. 基于Oauth 1.0协议腾讯微博分享Demo 4. 基于Oauth 2.0协议人人网分享Demo 5. 基于Oauth 1.0协议开心网分享Demo 示例说明不提供了,所有的细节几乎已经封装完毕,只需要按照要求传入参数即可,祝您好运。 文档更新说明 版本 作者 变更说明 1.0.0 方宏运 创建 1.1.0 方宏运 增补






