oauth

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

oauth [2016/04/22 17:05]
oauth [2016/04/22 16:55] (当前版本)
行 1: 行 1:
 +======OAuth2.0 开发文档 ======
 +
 +===== 1. 什么是OAuth2.0? =====
 +
 +**OAuth**: OAuth(开放授权)是一个开放标准,允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容。
 +
 +**企业QQ的OAuth2.0**:企业QQ使用OAuth2.0协议授权第三方App包括用户自研App访问企业QQ的后台数据,与一般的OAuth流程不同的是,企业QQ的授权流程中,需要区分员工帐号以个人身份进行授权,和企业管理员以企业身份进行授权。
 +
 +**Tips**:如果您想对OAuth2.0开放标准进行扩展阅读,请参看:[[http://​oauth.net/​2/​ |OAuth标准(英文)]] | [[http://​zh.wikipedia.org/​zh/​OAuth | OAuth维基百科(中文)]]
 +
 +
 +===== 2. 企业QQ帐号体系介绍 =====
 +
 +企业QQ是以企业单位进行购买的,每个企业都有一个代表企业的QQ号码,我们称之为**企业主号**,每个员工也拥有一个企业QQ号码,称之为**员工帐号**。调用企业QQ开放平台提供的API获取企业的数据时,**需要以企业主号的身份进行授权**,否则将无法通过API接口的权限认证。
 +
 +===== 3. 开发准备 =====
 +
 +==== 申请App ID和App Secret ==== 
 +
 +合作伙伴开发商,或者用户开发者,在接入开放平台之前,必须申请App ID和App Secret,申请获得的途径,请参考[[:​use:​guide | 新手引导]]。
 +==== 阅读文档理解OAuth2.0协议的基本流程 ====
 +
 +请在开发前充分了解OAuth2.0的开发流程,需仔细阅读本页的相关说明。可以参阅[[http://​tools.ietf.org/​html/​rfc6749|OAuth2.0协议标准]] 和 [[http://​oauth.net/​ | 官方网站上的文档]]。
 +
 +
 +===== 4. OAuth2.0协议的基本流程 =====
 +
 +OAuth协议的基本流程如下图所示。第三方的App在需要请求企业QQ的数据之前,首先需要获取到用户的授权。用户授权后,第三方App就可以使用用户的授权,从企业QQ认证服务器获取到该企业QQ的访问令牌,通过这个令牌,就可以获得调用该企业保存在企业QQ服务器上的数据。
 +
 +{{ :​oauth-protocol-flow.png?​nolink |OAuth2.0协议的基本流程}}
 +
 +
 +===== 5. OAuth2.0授权的形式 ​ =====
 +
 +企业QQ开放平台支持两种形式的用户授权授予。
 +
 +==== 5.1 Authorization Code(授权码) ====
 +
 +Authorization Code授权方式,一般适用于Web类的应用产品,该类产品拥有自己的Web服务器,在Internet互联网上可以访问。第三方应用,将用户重定向到企业QQ的授权服务器,用户在企业QQ授权服务器校验身份完毕后,将授权颁发给第三方App,此时通过浏览器的302跳转,将授权服务器返回的Authorization Code传递给了第三方App的服务器,然后App的服务器再使用此Code,向企业QQ授权服务器交换Access Token(访问令牌)。
 +
 +其整个流程的序列图如下:
 +
 +{{ :​oauth-authorization-code-flow.png?​nolink | Authorization Code模式的授权流程}}
 +
 +
 +==== 5.2 Implicit 授权方式 ====
 +
 +对于纯客户端类型的第三方App,包括但不限于浏览器JS应用,桌面客户端应用,手机客户端应用,并且这些软件都是单机形式,没有第三方的Web服务器与之通信。这种情况下,可以使用Implicit授权方式。此种授权方式的安全性低于上面一种,所以,获得的访问令牌时间限制更短,也无法续期,一旦失效,需要用户重新授权。
 +
 +
 +{{ :​oauth-implicit-flow.png?​nolink | Implicit授权的基本流程}}
 +
 +
 +===== 6. 通过OAuth2.0协议获取企业的company_id和company_token =====
 +
 +如本文档第2节所描述,企业QQ的帐号体系分为**企业号**和**员工帐号**两种,这两种企业QQ号码,员工号码对应的是open_id和access_token,而企业号码的授权对应的是company_id和company_token,它们在调用开放平台API时候的地位是不尽相同的。**只有提供正确的company_id和company_token才能够获得拉取企业数据的权限**。
 +
 +获取企业号的company_id和company_token的流程也符合OAuth2.0的授权流程。但是和常见的略有不同。企业QQ使用企业账户中心网站管理一个企业接入的所有应用。所以,获取company_id和company_token的流程,从[[https://​id.b.qq.com | 企业账户中心]]的应用管理页面开始。
 +
 +其获取流程图如下:
 +
 +{{ :​account-center-open-app.png?​nolink | 企业管理员在企业账户中心开通App的流程}}
 +
 +上图描述的流程,是使用authorization code模式的Web类型App,某个企业管理员开通App时的流程。在上图的流程中,可以看到,App开发者需要事先登记好一个应用开通回调([[:​oauth:​example | callback逻辑的实现参考]]),才能完成开通的流程。登记应用开通回调,请以管理员身份,登入企业账户中心,在[[https://​id.b.qq.com/​hrtx/​hrtxapp/​dev/​apply|开发者模式]]页面中,填写【应用管理页面开通回调】字段即可。
 +
 +在开通App时候,获得company_id和company_token作为调用其他API的鉴权依据。
 +
 +