初学开放平台
一、OAuth
开放平台,是最近Web比较火的概念;本人公司搞互联网的,也当然想要凑热闹一把。
开放平台免不了要了解OAuth,这个已成为了开放平台验证身份的标准配置,其流程网上已有很多文档和说明。
http://open.weibo.com/wiki/index.php/Oauth
http://blog.csdn.net/hereweare2009/article/details/3968582
以下是我个人的了解和总结(based on OAuth
OAuth的定义(摘至wiki):
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。
OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要分享他们的访问许可或他们数据的所有内容。
开放平台都会涉及3个角色:用户、服务提供商(开放平台、用户数据资源拥有者)、第三方应用(接入开放平台的应用)。OAuth成为这三者之间,在保证用户身份验证的通讯协议;“用户”只需在信任的“服务提供商”输入用户名密码,就可以使用“第三方应用”。
第三方应用利用开放平台在验证用户的用户名密码的时候,会请求开放平台三个接口:
1.
requestToken
第三方应用会携带开放平台分配给他的appkey和appSecert(appkey是申请应用时分配的,调用接口时候代表应用的唯一身份,appkey和appSecert就如第三方应用在开放平台注册的用户名和密码),向开放平台获取一个requestToken(临时令牌)。
2.
authorize
第三方应用会携带这个requestToken和callbackurl(这个url是第三方应用url),请求第三方的authorize接口,验证用户身份。authorize接口会显示登录框界面,供用户输入用户名密码(注意authorize是开放平台提供的,用户是信任的)。当authorize登录验证成功后,开放平台会产生一个oauthVerfiy的随机字符串,携带到callbackurl并跳转。
3.
accessToken
此时第三方应用的callbackurl,就会携带oauthVerfiy,向开放平台请求换取accessToken。获取accessToken是最终目标,因为凭借accessToken,可以访问开放平台任何需要身份验证的资源接口api。
三者之间,登录校验的时序图如下所示,
二、绑定帐号
有一定用户群的网站,除了想简单接入新浪微播之外,还会为用户绑定帐号,即第三方站点用户绑定新浪用户。
根据之前的Oauth流程,我们可以看到Access
token是用户通过登录后的一个凭证,这个凭证可以访问开放平台的任何api资源。根据sina的官方解释:
“微博系统中,OAuth的Access
token不会过期,只有用户手工撤销授权或新浪收回您的app访问权限access
token才会失效。
目前OAuth只支持授权读写访问,授权的应用可以获取用户数据及发表微博。目前暂时不支持只读权限授权。”
显而易见,AccessToken在正常情况是不会失效的,那绑定用户也可以从这个参数下手。第三方应用可以通过自己用户的唯一标识和这个AccessToken做关联,就可以实现绑定效果。