概述

在不托管文件系统的情况下,WebOffice 集群提供了通用的文件在线预览/编辑/协同的能力。回调服务内的接口可以理解为文件系统的接口抽象,需要接入方提供文件元信息,文件下载地址,文件权限,文件保存等接口,用于打通在线编辑系统与文件系统。当然,接入方可以通过签发凭证(Token)的方式,自行管理文件系统的权限。

提示

Token 的流转:

接入业务方根据自身的鉴权需要自定义 Token。Token 在前端 初始化 SDK时传入, WebOffice 将会在回调接入业务方接口时通过 Header 的 X-Weboffice-Token 字段回传,业务方可在其所实现的接口上检查当前用户的 Token,用于鉴权。

回调服务的要求

通讯过程

以下是接入方通过 WebOffice-SDK 接入 WebOffice 在线预览/编辑服务的通讯全过程。回调服务对应于WebOffice-服务端 以及 接入方-服务端 间的通讯。

回调接口通讯

回调配置

回调配置是我们开发者后台应用详情中一个重要的配置项,与在线预览编辑服务紧密相关,您开发的回调服务必须通过回调配置才能与应用进行绑定。在回调配置界面,可以对您的接口进行在线调试,根据返回的错误信息一步一步完善接口。当调试无误后,便可以通过左侧的开关开启此项接口,WebOffice 服务的对应的功能便会自动开启。

回调请求签名

WebOffice 服务集群发出的回调请求,全部经过 WPS-2 签名算法签名。签名需要用到申请应用时拿到的 AppId 和 AppSecret。签名实现如下:

签名相关请求头(HTTP Header)说明
Date请求发生时间。 以 时间格式的当前时间RFC1123
Content-Type请求中 Body 内容的 mime 类型
Content-Md5请求中 Body 内容的 md5 值十六进制表示方式, 小写。如果 Body 为空,改用 URI 计算, 例如: 原始请求为 GET https://foo.bar.com/baz/v3/3rd/files/123 则取 /baz/v3/3rd/files/123 计算
Authorization格式为:WPS-2:AppId:SHA1值 其中 SHA1值 的计算方式为 SHA1( AppSecret + Content-Md5 + Content-Type + Date) 十六进制表示方式, 小写

提示

Get请求 Content-Type 使用空字符串来计算 相关讨论:社区-签名算法

业务数据请求头

除签名头外,回调请求会携带如下四个业务数据头:

请求头必须类型说明
X-App-Id是string当前请求所属的 AppId 与 URl 上的 _w_appid 值相同
X-WebOffice-Token是string当前请求的用户凭证,即通过传递的token值初始化参数
X-Request-Id否string本次请求 ID,方便定位问题
X-User-Query否stringURL 中的 query 部分,包含一些基础参数和 WebOffice SDK 时通过customArgs传递的参数,例如customArgs的值为{"firstname":"jack","lastname":"green"},那么该请求头的内容为_w_appid=xxx&_w_tokentype=xxx&file_id=xxx&firstname=jack&lastname=green初始化

info

tip 提示 上述提到的 URL 指的是接入方前端通过 WebOffice SDK 打开文档的 iframe 的链接。

接入方返回值格式

接入方应统一返回 application/json 格式的数据,相关字段和说明请参照下表。

字段必须类型说明
code是integer错误码,详见后续,请求成功时,code 为 0错误码
message否string错误说明,请求成功时,该字段可以不返回
data否object具体数据,请求失败时,该字段可以不返回

请求成功示例

json
{
  "code": 0,
  "message": "",
  "data": {
    //这里的具体数据,根据回调接口不同,返回不同的scheme
    "id": "404",
    "name": "Joe Doe"
  }
}

请求失败示例

json
{
  "code": 40004,
  "message": "file not exists"
}

返回字段规范

文件 ID

文件 ID 可由数字、字母和下划线组成,但不能以下划线开头。文件 ID 在接入方系统中不能具有二义性(保持唯一)。文件 ID 长度要求不超过 47 位字符串,超出规定长度的将无法校验通过。

用户 ID

用户 ID 可由数字、字母和下划线组成,但不能以下划线开头。用户 ID 在接入方系统中不能具有二义性(保持唯一)。用户 ID 长度要求不超过 48 位字符串,超出规定长度的将无法校验通过。

历史版本号

历史版本号只能为正数,且逐步递增,最大不超过 2147483647。建议从 1 开始递增,每保存一个版本加一。