i8小时支持三种授权模式:
授权码模式(authorization code)
密码模式(resource owner password credentials)
客户端模式(client credentials)
授权码模式(authorization code)
第一步,GET 请求/oauth2/v1/authorise (弹出用户授权登录框)
请求参数:
参数名 | 描述含义 |
client_id | 应用的唯一标识,对应于appID(必选) |
response_type | 响应类型,此处为code (必选) |
scope | 申请权限的范围 (必选) |
redirect_uri | 用户授权完成后的回调地址,应用需要通过此回调地址获得用户的授权结果。此地址必须与在应用注册时填写的回调地址一致。如:http://www.example.com/ (必选) |
state | 用来维护请求和回调状态的附加字符串,在授权完成回调时会附加此参数,应用可以根据此字符串来判断上下文关系。(可选) |
如下:
GET /oauth2/v1/authorise?client_id=dd631edd-5c88-4960-914d-71f18962de30&response_type=code&scope=0&redirect_uri=http%3A%2F%2Fwww.example.com%2F&state=123456 HTTPS/1.1
Host: open.i8xiaoshi.com
Content-Type: application/x-www-form-urlencoded
第二步,根据用户登录,若登录验证成功,则跳转 https://www.example.com/?code=Uz98r4p76523feWaYewHmj53K2 (授权码code为10分钟有效期)
如下:
HTTPS/1.1 302 Found
Location: https://www.example.com/?code=Uz98r4p76523feWaYewHmj53K2
第三步,获取到code之后,POST 请求/oauth2/v1/token 客户端向i8小时服务器申请令牌
请求参数:
参数名 | 描述含义 |
grant_type | 授权模式,当前为“authorization_code”(必选) |
client_id | 应用的唯一标识,对应于appID (必选) |
code | 上一步获得的授权码 (必选) |
redirect_uri | 用户授权完成后的回调地址,应用需要通过此回调地址获得用户的授权结果。此地址必须与在应用注册时填写的回调地址一致。如:http://www.example.com/ (必选) |
如下:
POST /oauth2/v1/token HTTPS/1.1
Host: open.i8xiaoshi.com
Authorization: Basic Uz98r4p76523feWaYewHmj53K2
Content-Type: application/x-www-form-urlencoded
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Form Data: grant_type=authorization_code&client_id=dd631edd-5c88-4960-914d-71f18962de30&redirect_uri=http%3A%2F%2Fwww.example.com%2F&code=Uz98r4p76523feWaYewHmj53K2
备注:HTTP头部信息"Authorization: Basic Uz98r4p76523feWaYewHmj53K2",其中的代码串为appid与secretid相加之后的sha1加密串,即"Authorization: Basic sha1(appid+secretid)",
第四步,若认证服务器通过,则HTTP响应数据格式为
参数名 | 描述含义 |
access_token | 访问令牌 |
token_type | 令牌类型 |
expires_in | 过期时间,单位为秒 |
refresh_token | 更新令牌,用来获取下一次的访问令牌 |
scope | 权限范围 |
如下:
{"access_token": "83EtnFZFEjr1zCsicMWpAAFE","token_type": "bearer","expires_in": "1342342","refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA","scope": 1 }
密码模式(resource owner password credentials)
第一步,POST 请求/oauth2/v1/token 客户端向i8小时服务器申请令牌
请求参数:
参数名 | 描述含义 |
grant_type | 授权模式,当前为“password”(必选) |
client_id | 应用的唯一标识,对应于appID (必选) |
scope | 权限范围 (必选) |
passportID | 用户登录名 (必选) |
password | 用户登录密码 (必选) |
POST /oauth2/v1/token HTTPS/1.1
Host: open.i8xiaoshi.com
Authorization: Basic Uz98r4p76523feWaYewHmj53K2
Content-Type: application/x-www-form-urlencoded
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Form Data: grant_type=password&client_id=dd631edd-5c88-4960-914d-71f18962de30&scope=0&passportID=user@exmail.com&password=12345678
备注:HTTP头部信息"Authorization: Basic Uz98r4p76523feWaYewHmj53K2",其中的代码串为appid与secretid相加之后的sha1加密串,即"Authorization: Basic sha1(appid+secretid)",
第二步,若认证服务器通过,则HTTP响应数据格式为(同授权码模式第四步)
如下:
{"access_token": "83EtnFZFEjr1zCsicMWpAAFE","token_type": "bearer","expires_in": "1342342","refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA","scope": 1 }
客户端模式(client credentials)
第一步,POST 请求/oauth2/v1/token 客户端向i8小时服务器申请令牌
请求参数:
参数名 | 描述含义 |
grant_type | 授权模式,当前为“clientcredentials”(必选) |
client_id | 应用的唯一标识,对应于appID (必选) |
scope | 权限范围 (必选) |
redirect_uri | 用户授权完成后的回调地址,应用需要通过此回调地址获得用户的授权结果。此地址必须与在应用注册时填写的回调地址一致。如:http://www.example.com/ (必选) |
POST /oauth2/v1/token HTTPS/1.1
Host: open.i8xiaoshi.com
Authorization: Basic Uz98r4p76523feWaYewHmj53K2
Content-Type: application/x-www-form-urlencoded
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Form Data: grant_type=clientcredentials&client_id=dd631edd-5c88-4960-914d-71f18962de30&scope=0&redirect_uri=http%3A%2F%2Fwww.example.com%2F
备注:HTTP头部信息"Authorization: Basic Uz98r4p76523feWaYewHmj53K2",其中的代码串为appid与secretid相加之后的sha1加密串,即"Authorization: Basic sha1(appid+secretid)",
第二步,若认证服务器通过,则HTTP响应数据格式为(同授权码模式第四步)
如下:
{"access_token": "83EtnFZFEjr1zCsicMWpAAFE","token_type": "bearer","expires_in": "1342342","refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA","scope": 1 }
刷新令牌(refresh access_token)
第一步,POST 请求/oauth2/v1/token 客户端向i8小时服务器刷新令牌
请求参数:
参数名 | 描述含义 |
grant_type | 授权模式,当前为“refresh_token”(必选) |
client_id | 应用的唯一标识,对应于appID (必选) |
refresh_token | 刷新token令牌 |
scope | 权限范围 (必选) |
redirect_uri | 用户授权完成后的回调地址,应用需要通过此回调地址获得用户的授权结果。此地址必须与在应用注册时填写的回调地址一致。如:http://www.example.com/ (必选) |
POST /oauth2/v1/token HTTPS/1.1
Host: open.i8xiaoshi.com
Authorization: Basic Uz98r4p76523feWaYewHmj53K2
Content-Type: application/x-www-form-urlencoded
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Form Data: grant_type=refresh_token&client_id=dd631edd-5c88-4960-914d-71f18962de30&scope=0&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA&redirect_uri=http%3A%2F%2Fwww.example.com%2F
备注:HTTP头部信息"Authorization: Basic Uz98r4p76523feWaYewHmj53K2",其中的代码串为appid与secretid相加之后的sha1加密串,即"Authorization: Basic sha1(appid+secretid)",
第二步,若认证服务器通过,则HTTP响应数据格式为(同授权码模式第四步)
如下:
{"access_token": "83EtnFZFEjr1zCsicMWpAAFE","token_type": "bearer","expires_in": "1342342","refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA","scope": 1 }
凭令牌(access_token)访问数据接口
当获取到accessToken之后,再将有效的accessToken放于Http头部,设为Authorization属性值,格式为"Authorization:[tokenType] [accessToken]",如下请求成员信息接口:
GET /com/user/info?userId=c5f22cfc-cf70-49ec-9955-106562d03904 HTTPS/1.1
Host: oapi.i8xiaoshi.com
Authorization: Bearer 83EtnFZFEjr1zCsicMWpAAFE
Content-Type: application/json;charset=utf-8