使用方接入流程
该部分旨在指导集成应用如何对接集成能力接口。
准备工作
使用方接入前,需保证以下工作已完成
私网创建应用,在二开私网创建应用或者在协作开发者后台创建应用
应用授权:授权相关开放能力
若是企业授权需使用使用云文档账号登录授权

若涉及用户授权,可在协作开发者后台或者二开私网设置授权回调地址


详细说明可参考文档:可参考【产品文档】集成应用管理手册-20230426
接入流程-获取访问凭证
访问凭证可分为用户授权、企业授权和应用授权凭证。
用户授权
用户授权为委托授权的一种,委托人为普通用户。授权第三方应用获取所属用户相关数据。(获取涉及到用户个人信息的授权,不含应用能力和企业数据的授权)
授权流程
第三方应用需要获取用户信息(如:头像、用户名、用户文件等)时,由开放平台发起的授权流程,用户完成授权后,第三方应用可通过获取到的access_token进行数据获取。

接口说明
一、构造授权跳转链接,用户授权,获取临时授权码code 根据定义,构造授权跳转链接,用户同意授权后,会重定向跳转到指定的 redirect_uri,并附带 code、state 两个参数。主要是用于用户首次登录用户授权确认,用户确认后,下次直接登录应用,无需再次授权。请求说明
| 请求地址 | 配置域名+/o+/oauth+/v1/authorize |
|---|---|
| 请求方法 | GET/POST |
| 签名方式 | 无 |
| 支持应用类型 | 企业自建应用 |
| 权限要求 | 无 |
查询参数(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&auto_grant=false&redirect_uri=REDIRECTURI&scope=SCOPE&state=STATE用户访问三方应用构造的授权链接地址:
参数auto_grant为true,用户已经登陆,那么则直接跳转至授权回调地址
参数auto_grant为false,用户还未登陆,先重定向至应用管理平台授权页面,判断用户未登录,那么重定向至登录页面

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

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

参数auto_grant为true,用户还未登录,则先重定向至应用管理平台授权页面,判断用户未登录,那么重定向至登录页面

登录成功后,跳转至授权页面,无需用户操作,自动获取临时授权码code,并跳转至授权回调地址

响应体
用户访问授权链接,并登录后,会跳转至授权页。 1.用户登录页面

2.用户授权页面
3.用户同意授权 如果用户点击同意授权,页面将重定向至授权链接中的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 | 是 | 权限项 |
响应体(Response)
| 名称 | 类型 | 说明 |
|---|---|---|
| code | integer | 状态码,非0表示失败,参照状态码说明 |
| msg | string | 错误信息,成功时统一为Success |
| data | object | |
| ∟token | object | 凭证信息 |
| ∟access_token | string | 访问凭证 |
| ∟token_type | string | 固定为Bearer |
| ∟expires_in | integer | 凭证有效期,单位为秒 |
| ∟refresh_token | string | 刷新凭证,在授权未过期之前,可用于刷新/重新获取访问凭证 |
| ∟access_token | string | 访问凭证 |
| access_token | string | 访问凭证 |
| token_type | string | 固定为Bearer |
| expires_in | integer | 凭证有效期,单位为秒 |
| refresh_token | integer | 刷新凭证 |
响应体示例
{
"code": 0,
"data": {
"token": {
"access_token": "ACCESSTOKEN",
"token_type": "Bearer",
"expires_in": "EXPIRES",
"refresh_token": "REFRESHTOKEN"
}
},
"access_token": "ACCESSTOKEN",
"token_type": "Bearer",
"expires_in": "EXPIRES",
"refresh_token": "REFRESHTOKEN"
}企业授权
企业授权为应用授权的一种,企业管理员授权第三方应用获取企业相关数据。(使用的能力涉及到企业数据,需要得到企业管理员的同意)
授权流程
由系统管理员对第三方应用进行的授权,如获取企业通讯录的管理权限、角色配置权限、审核日志的查询权限等,此类授权一般需要获取管理员角色相关的权限。通过企业授权获取access_token,第三方应用可以在业务系统中的对应场景操作以上管理员才具备的数据权限。

接口说明
获取企业授权凭证access_token 获取已授权的企业类型权限对应的access_token信息。(此处的access_token是企业超管授权第三方应用访问企业资源的凭证) 注意:企业授权凭证access_token有效期24小时,过期后可重新获取新的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 | 是 | 授权类型,client_credentials:客户端模式 |
| scope | string | 是 | 权限项 |
| company_id | string | 否 | 企业id,多租户下的企业必传 |
响应体(Response)
| 名称 | 类型 | 说明 |
|---|---|---|
| code | integer | 状态码,非0表示失败,参照状态码说明 |
| msg | string | 错误信息,成功时统一为Success |
| data | object | |
| ∟token | object | 凭证信息 |
| ∟access_token | string | 访问凭证 |
| ∟token_type | string | 固定为Bearer |
| ∟expires_in | integer | 凭证有效期,单位为秒 |
| access_token | string | 访问凭证 |
| token_type | string | 固定为Bearer |
| expires_in | integer | 凭证有效期,单位为秒 |
响应体示例
{
"code": 0,
"data": {
"token": {
"access_token": "ACCESSTOKEN",
"token_type": "Bearer",
"expires_in": "EXPIRES"
}
},
"access_token": "ACCESSTOKEN",
"token_type": "Bearer",
"expires_in": "EXPIRES"
}应用授权
应用授权指由平台授权第三方应用使用开放能力权限。(使用的能力不涉及到企业数据,平台方比如二开平台同意即可使用能力)
授权流程
由平台管理员对第三方应用进行的授权,如获取应用文档开放能力等,授权后第三方应用方可通过接口获取相应scope的access_token信息。

接口说明
获取应用授权凭证access_token 获取已授权的应用类型权限对应的access_token信息。
注意:授权凭证access_token有效期24小时,过期后可重新获取新的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 | 是 | 授权类型,client_credentials:客户端模式 |
| scope | string | 否 | 权限项 |
响应体(Response)
| 名称 | 类型 | 说明 |
|---|---|---|
| code | integer | 状态码,非0表示失败,参照签名说明 |
| msg | string | 错误信息,成功时统一为Success |
| data | object | |
| ∟token | object | 凭证信息 |
| ∟access_token | string | 访问凭证 |
| ∟token_type | string | 固定为Bearer |
| ∟expires_in | integer | 凭证有效期,单位为秒 |
| access_token | string | 访问凭证 |
| token_type | string | 固定为Bearer |
| expires_in | integer | 凭证有效期,单位为秒 |
响应体示例
{
"code": 0,
"data": {
"token": {
"access_token": "ACCESSTOKEN",
"token_type": "Bearer",
"expires_in": "EXPIRES"
}
},
"access_token": "ACCESSTOKEN",
"token_type": "Bearer",
"expires_in": "EXPIRES"
}开源SDK使用
授权接口采用OAuth2.0协议标准,故认证授权接口支持通过三方SDK来调用。 如支持golang开源的OAuth2.0 Package调用(https://github.com/golang/oauth2)
- 官方提供了默认的Auth Basic认证方式,安全度不高,需使用本方案的签名方案
- golang官方提供了扩展认证方式,步骤如下:1.自定义HTTPClient
2.传入自定义HTTPClient 