将具体介绍新浪微博的 Oauth 授权机制和 API 的调用方法,同时也会举例阐述为 IBM Connections 定制新增一些公共社交网络功能的实现方法。
众所周知,微博(MicroBlog)做为一个全新的社会化信息发布分享、传播以及获取平台逐渐受到了广大用户的追捧,用户数量呈井喷式快速增长。同时,大多数微博平台都开放了 API 供第三方开发者进行应用开发,使其应用具有更强大的社交特性。
随着 IBM Connections 4 的正式发布,一个类似微博的新功能 activity stream 受到了很多企业用户的青睐。activity stream 能够帮助用户快速获取到企业网络中你所关注和自己网络中的信息,并可以对其进行快速的评论、转发和保存等操作。
市场瞬息万变, 在日常工作中,企业员工还常常会通过关注企业外部业界名人微博或者知名企业微博来即时获取业界动态和市场发展趋势,有时候还很有必要将企业外部的业界信息能够即时的在企业内部社交网络中进行传播和分享,这样将有利于企业员工能在第一时间获取到第一手行业信息,从而保证该企业在行业中的保持较强竞争力。
若企业用户能够轻而易举的将外部公共微博(如新浪微博)中的行业信息、业界动态或者有价值的咨询在企业内部社交网络(如 IBM Connections)中进行快速的传播和分享,这将大大提高企业的信息化程度,帮助企业在日益变化的市场中占得先机。
技术概述
Oauth 授权机制
Oauth 协议是目前比较流行资源公共认证标准。它可以为资源的授权提供了一个安全的、开放而又简易的标准。任何第三方应用都可以使用 Oauth 认证服务,任何服务提供商都可以实现自身的 Oauth 认证服务,使得用户允许第三方应用访问个人资源的同时不暴露自己的用户名密码。
下面以本应用场景为例 , 将简要介绍一下 Ouath 协议中的各种角色以及验证过程,更多 Oauth 的信息可以查看其官方网站。
服务提供商 (ServiceProvide),在本应用场景中的服务提供商是新浪微博 Api,它提供了一系列 Oauth 服务来对用户的微博进行操作。包括发布,查看和删除等丰富的功能。第三方应用可以使用 Oauth 认证来获取该服务商所提供的公共接口。
服务消费者(Consumer),在本应用场景中服务消费者指的是 IBM Connections 平台,它作为一个第三方应用希望访问新浪微博中的资源,再利用这些使用 Oauth 保护的咨询进行自身业务的扩展。
用户(User),在本应用场景中用户是新浪微博中受保护资源的拥有者,即指既在企业内部使用 IBM Connections 又拥有新浪微博的用户,用户期望使用 IBM Connections 自身的 Api 以及通过 Oauth 服务获取到的新浪微博资源在 Connections 中对外部资源进行操作。
图 1 简要描述了一个完整的新浪微博 Web Oauth2 的认证过程:
图 1. 新浪微博 Web Oauth2 认证过程
A: IBM Connections 向资源的所有者请求授权,通常的做法是引导用户去新浪所提供的一个授权页面,如图 2 所示:
图 2. 新浪微博授权界面
B: 用户填写用户名密码通过授权后,IBM Connections 就会收到访问许可。
C: IBM Connections 将自己在新浪获取的的私钥 App Secret 和访问许可发往新浪请求访问令牌。
D: 浏览器中就会生成如下一个 Cookies,即获取到了访问令牌,如图 3。
图 3. 生成令牌
E: 现在就可以使用 Sina 提供的 weibo api 发送携带有访问令牌的请求。
F: 被保护的用户资源就可以成功返回了。