用户授权
用户授权为委托授权的一种,委托人为普通用户。授权第三方应用获取所属用户相关数据。
授权流程
第三方应用需要获取用户信息(如:头像、用户名、用户文件等)时,由开放平台发起的授权流程,用户完成授权后,第三方应用可通过获取到的access_token进行数据获取。

用户授权时序图
接口说明
一、构造授权跳转链接,用户授权,获取临时授权码code
根据定义,构造授权跳转链接,用户同意授权后,会重定向跳转到指定的 redirect_uri,并附带 code、state 两个参数。
请求说明
| 请求地址 | 配置域名+/o+/oauth+/v1/authorize |
|---|---|
| 请求方法 | GET |
| 签名方式 | 无 |
| 权限要求 | 无 |
查询参数(Query)
| 参数 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| client_id | string | 是 | 应用唯一标识 |
| response_type | string | 是 | 授权类型,固定为:code |
| redirect_uri | string | 是 | 授权后重定向的回调链接地址 |
| scope | string | 是 | 用户授权的权限,多个值以英文逗号分割,参考《权限说明》 |
| state | string | 否 | 由用户自定义,授权成功后会通过重定向接口带回 |
| auto_grant | boolean | 否 | 是否自动授权,如果已经登录且auto_grant为true则不跳转到授权界面 |
请求地址示例
[GET] 配置域名+/o+/oauth+/v1/authorize?response_type=code&client_id=APPID&redirect_uri=REDIRECTURI&scope=SCOPE&state=STATE
用户访问三方应用构造的授权链接地址:
- 参数auto_grant为true,用户已经登陆,那么则直接跳转至授权回调地址
- 参数auto_grant为false,用户还未登陆
- 先重定向至应用管理平台授权页面,判断用户未登录,那么重定向至登录页面

- 登录成功之后,跳转至授权页面

- 点击允许,从服务端获取临时授权码code,并调转至授权回调地址
- 参数auto_grant为false,用户已经登陆
- 先重定向至授权页面,判断用户已经登陆,那么等待用户操作

- 点击允许,从服务端获取临时授权码code,并调转至授权回调地址
- 参数auto_grant为true,用户还未登录
- 先重定向至应用管理平台授权页面,判断用户未登录,那么重定向至登录页面

- 登录成功之后,跳转至授权页面

- 无需用户操作,自动获取临时授权码code,并跳转至授权回调地址
响应体
用户访问授权链接,并登录后,会跳转至授权页。
- 用户登录页面

- 用户授权页面

- 用户同意授权
如果用户点击同意授权,页面将重定向至授权链接中的redirect_uri地址,并携带临时授权码(code)和用户自定义参数(state)。示例:redirect_uri?code=CODE&state=STATE
注意:code 作为换取 access_token 的票据,仅可使用一次且 10 分钟未被使用自动过期。
说明:
请求中的redirect_uri会进行校验,必须先配置回调授权地址(当前仅校验host:port)
二、获取或刷新access_token
服务端调用该接口获取或刷新用于访问用户授权凭证access_token。
注意:获取到的 access_token 安全级别比较高,后续刷新 access_token、通过 access_token 获取用户信息等步骤,必须从服务器调用接口。
请求说明
| 请求地址 | 配置域名+/o+/oauth+/v1/token |
|---|---|
| 请求方法 | POST |
| 签名方式 | WPS-4签名(url仅签名/v1/token部分) |
| 权限要求 | 无 |
请求头(Header)
| 名称 | 是否必须 | 说明 |
|---|---|---|
| Content-Type | 是 | 固定为:application/x-www-form-urlencoded |
| Wps-Docs-Date | 是 | 取当前时间,示例:Wed, 23 Jan 2013 06:43:08 GMT |
| Wps-Docs-Authorization | 是 | Authorization计算方法参考《签名说明》 |
请求体(Body)
| 参数 | 参数类型 | 是否必填 | 说明 |
|---|---|---|---|
| grant_type | string | 是 | 授权类型,authorization_code:授权码模式refresh_token:刷新授权码 |
| code | string | 否 | 临时授权码,grant_type为authorization_code时必填 |
| redirect_uri | string | 否 | 授权回调地址,grant_type为authorization_code时必填 |
| refresh_token | string | 否 | 刷新凭证,grant_type为refresh_token时必填 |
| scope | string | 是 | 权限项,grant_type为authorization_code时非必填 |
响应体(Response)
| 名称 | 类型 | 说明 |
|---|---|---|
| code | integer | 状态码,非0表示失败,参照《状态码说明》 |
| msg | string | 错误信息,成功时统一为Success |
| access_token | string | 访问凭证 |
| token_type | string | 固定为Bearer |
| expires_in | interger | 凭证有效期,单位为秒 |
| refresh_token | string | 刷新凭证 |
响应体示例
{
"code": 0,
"access_token": "ACCESSTOKEN",
"token_type": "Bearer",
"expires_in": "EXPIRES",
"refresh_token": "REFRESHTOKEN"
}