授权机制说明

概述

中国电信天翼开放平台基于OAuth2.0提供授权服务。OAuth2.0 授权协议使得第三方应用程序有限制地访问HTTP服务。通过安排资源拥有者与HTTP服务进行授权交互,使得应用程序可以代表资源拥有者(on behalf of a resource owner);或者允许第三方应用程序(on its own behalf)自己去访问。

基本流程

Client指第三方应用,Resource Owner指用户,Authorization Server是我们的授权服务器,Resource Server是API服务器。

中国电信天翼开放平台支持3种授权方式:Authorization Code、Implicit Grant和Client Credentials。其中Authorization Code的主要用于Web应用,Implicit Grant用于手机和桌面等Native应用。Client Credentials可用于Web和Native应用,但仅限于用来访问一些公共资源;而不是受限资源,即属于某个用户的资源。

接口文档

oauth2/v2/authorize 请求用户获取Token

oauth2/v2/access_token 获取授权过的Access Token

应用场景

1) 访问受限资源(protected resource)的流程

 1.1) Web应用的验证授权(Authorization Code)

基本流程

 1. 引导需要授权的用户重定向到如下地址:

	https://oauth.api.189.cn/emp/oauth2/v3/authorize?app_id=YOUR_CLIENT_ID&response_type=code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI 

 2. 如果用户同意授权,页面通过天翼开放平台平台重定向至YOUR_REGISTERED_REDIRECT_URI ? code =CODE

 3. 换取Access Token

	https://oauth.api.189.cn/emp/oauth2/v3/access_token
使用POST方式传递参数:
app_id=YOUR_CLIENT_ID&app_secret=YOUR_CLIENT_SECRET&grant_type=authorization_code&redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=CODE

 返回值

	{ "access_token":"SlAV32hkKG", "expires_in":3600 } 

 4. 使用获得的OAuth2.0 Access Token调用API

 1.2) Native应用的验证授权(Implicit Grant)

 基本流程

 1. 引导需要授权的用户到如下地址:

	https://oauth.api.189.cn/emp/oauth2/v3/authorize?app_id=YOUR_CLIENT_ID&app_secret=YOUR_CLIENT_SECRET&response_type=token&redirect_uri=YOUR_REGISTERED_REDIRECT_URI

 2 .如果用户同意授权,页面跳转至

	YOUR_REGISTERED_REDIRECT_URI#access_token=ACCESS_TOKEN&expires_in=3600 

 3. 获取页面上的Access Token

 Implicit Grant返回的令牌信息放在URL参数上,可以从地址栏的URL上获取令牌信息。

 

  4. 客户端默认回调页

通常通常Mobile Native App没有服务器回调地址,您可以在应用控制台授权回调页处填写平台提供的默认回调页,该页面用户不可见,仅用于获取access token。

OAuth2.0客户端默认回调页:https://oauth.api.189.cn/emp/oauth2/default.html
 

 5. 使用获得的OAuth2.0 Access Token调用API

 2) 访问公共资源(public resource)的流程(Client Credentials)

 Authorization code和Implicit Grant流程可用于获取受限资源;但如果应用访问一些无需用户授权的公共资源,可以使用Client Credentials更方便地获取令牌,并使用令牌访问公共资源。

 1、获取令牌

	https://oauth.api.189.cn/emp/oauth2/v3/access_token
使用POST方式传递参数:
app_id=YOUR_CLIENT_ID&app_secret=YOUR_CLIENT_SECRET&grant_type=client_credentials&redirect_uri=YOUR_REGISTERED_REDIRECT_URI 

 返回值

	{ "access_token":"SlAV32hkKG", "expires_in":3600 } 

 2. 使用获得的OAuth2.0 Access Token调用API

 

使用OAuth2.0调用API

使用OAuth2.0调用API接口有两种方式:

 1. 直接使用参数传递参数名为access_token

	https://api.189.cn/2/statuses/public_timeline.json?access_token=abcd 

 2. 在header里传递形式为在header里添加Authorization:Bearer 空格abcd 这里的abcd假定为Access Token的值。

 其它接口参数正常传递即可

 授权取消回调页

开发者可以在应用控制台填写取消授权回调页,当用户取消你的应用授权时,开放平台会回调你填写的这个地址,并传给您如下参数:

app_id:应用ID,开发者创建应用时,天翼开放平台会为应用自动分配此ID,开发者进入"管理中心",在"应用详情"中可查看app_id。
open_id: 根据APPID以及天翼账号用户标识生成,即不同的APPID下,同一个天翼账号用户标识生成的OpenID是不一样的。
auth_end:取消授权日期(时间戳)


	http://cancel_app_callback&app_id=YOUR_CLIENT_ID&open_id=88128873376&auth_end=123456677

  返回值

			
  { "res_code":0, "res_message":"" }