| 说明 | 接口 | 不做的后果 | 是否建议实现 | 不需要场景 |
|---|---|---|---|---|
| [重要] 获取当前用户信息 | GET /users/current/info | 用户身份取不到,无法预览本地文档、也无法创建协同文档 | 必须实现 | 任何场景都需要此接口 |
| [重要] 获取预览文件元信息 | GET /files/{fileId} (预览文件) | 无法预览本地文档 | 必须实现 | 预览文档场景需要此接口 |
| [重要] 获取协同文件元信息 | GET /files/{fileId} (协同文件) | 无法创建协同文档 | 必须实现 | 协同文档编辑、导 入、导出等场景需要此接口 |
| 获取指定用户信息 | GET /users/{userId} | 标题栏、历史记录里他人头像缺失 | 建议实现 | 如果不需要显示标题栏、历史记录,则无需实现此接口 |
| 批量获取用户信息 | POST /users/batch/get | 多人协作侧栏空白 | 建议实现 | 如果不需要在多人协作侧栏显示其他协作头像,则无需实现此接口 |
| 获取文件协作者列表 | GET /files/{fileId}/collaborators | 评论通知、协作者列表异常 | 根据你实际业务需求酌情实现 | 如果不需要获取写作者列表,则无需实现此接口 |
| 以管理员身份获取文件元信息 | GET /admin/files/{fileId} | 跨表格引用、应用表格联动失败 | 根据你实际业务需求酌情实现 | 如果未启用跨表格引用功能,则无需实现此接口 |
| 事件推送接口 | POST /events | 业务系统拿不到评论/更新通知 | 根据你实际业务需求酌情实现 | 如果不需要接收来自石墨的事件通知,则无需实现此接口 |
| 按关键字搜索文件和用户列表 | /search/* | @ 用户下拉列表为空,但不影响打开 | 根据你实际业务需求酌情实现 | 如果不需要在文件中 @ 其他客户,则无需实现此接口 |
| 获取团队、部门信息 | /teams/* / /departments/* | 团队场景不可用,但单文件不受影响 | 根据你实际业务需求酌情实现 | 如果不需要在表格单元格锁定中指定团队、部门,则无需实现此接口 |
| 获取当前用户水印设置 | /users/{userId}/watermark 等水印接口 | 水印不展示 | 根据你实际业务需求酌情实现 | 如果不需要开启文件水印功能,则无需实现此接口 |
X-WebOffice-Token,目的是验证当前用户身份。POST /events 推到你的应用。X-WebOffice-Signature 验证。X-WebOffice-Credential-Type,标识本次回调是哪一类——你的应用据此选择校验 Token 还是校验 Signature:| Credential-Type | 触发方 | 携带凭证 | 校验方式 | 典型场景 |
|---|---|---|---|---|
0 | 用户操作 | X-WebOffice-Token | 由你的应用自行签发与校验 | 打开文档、编辑、评论、@、预览、搜索 |
3 | 石墨系统 | X-WebOffice-Signature | 用 appSecret 校验 JWT (HS256) | 跨表格引用、应用表格联动、定时任务、表单订阅 |
系统回调的 URL 上通常带 /admin/前缀(如GET /admin/files/{fileId})——这是它"与具体用户无关"的体现。
appSecret 校验 JWT 签名(HS256)。exp 是否过期。/admin/files/{fileId} 这类接口要返回文件本身的元信息和权限,不要试图按当前用户过滤。<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.4.0</version>
</dependency>完整的 Signature 字段语义( appId/userId/fileId/scope/exp)见 Signature 指南。
更新应用回调地址 接口里配置的 endpoint_url,下表省略此前缀。| 接口 | 用途 | 凭证 |
|---|---|---|
GET /files/{fileId} | 获取协同文档元信息(名称、类型、权限、创建者) | Token |
GET /files/{fileId} | 获取预览文件元信息(名称、下载地址) | Token |
GET /files | 当前用户的文件列表(用于跨表格公式选择文件等场景) | Token |
GET /files/{fileId}/collaborators | 协作者列表(用于评论同步、协作通知) | Token |
POST /files/{fileId}/url | 把石墨 SDK 跳转地址翻译回你的应用 URL | Token |
GET /admin/files/{fileId} | 文件元信息(系统任务,无用户上下文) | Signature |
GET /admin/files/{fileId}/by-user-id | 按指定用户查文件元信息(跨表格引用、表单订阅等) | Signature |
permissions字段非常关键——直接决定编辑器是否可读 / 可写 / 可评论 / 可导出 / 可管理。详见 协同文档权限指南。
| 接口 | 用途 | 凭证 |
|---|---|---|
GET /users/current/info | 当前用户信息 (id、名称、头像) | Token |
GET /users/current/team | 当前用户所在团队 | Token |
GET /users/{userId} | 指定用户信息 | Token |
GET /users/{userId}/watermark | 用户水印字段(可返回空) | Token |
GET /users/{userId}/department-paths | 用户部门路径(可返回空) | Token |
POST /users/batch/get | 批量获取用户信息(多人协作侧栏) | Token |
POST /admin/users/batch/get | 批量获取用户信息(应用表格、表单等系统场景) | Signature |
| 接口 | 用途 | 凭证 |
|---|---|---|
GET /teams/{teamId}/members | 团队成员分页列表 | Token |
GET /departments/{departmentId} | 部门信息 | Token |
GET /departments/{departmentId}/children | 下级部门节点 | Token |
GET /departments/{departmentId}/members | 部门成员分页列表 | Token |
如果你的业务里没有团队/部门概念,这一组可以返回空数组或 404——但要确保实现存在并返回合法 JSON,否则会触发 10011错误。
| 接口 | 用途 | 凭证 |
|---|---|---|
GET /search/users/recent | @ 人时的下拉候选(按文件维度推荐) | Token |
GET /search/users | 全局搜索用户 | Token |
GET /search/files/recent | 跨表格引用时的文件候选 | Token |
| 接口 | 用途 | 凭证 |
|---|---|---|
POST /events | 评论、@、内容更新、协作状态、版本变化等事件 | Token |
X-WebOffice-Sdk-Event 区分(如 comment / mention_at / file_updated / collaborator_changed / revision_created)。详见 事件推送回调。10010)。application/json。views 写成字符串)会触发 10011 / 10012。permissions 字段建议至少给文件创建者 manageable: true,否则后续删除、版本管理等接口会拒绝。10001 / 10015。PUT /sdk/v2/api/license/apps/{appId}/endpoint-url 配置(详见后端 API · 概述)。POST /events)可能因网络抖动或石墨侧重试出现重复——务必按事件 id 做幂等。X-WebOffice-Credential-Type、当前用户 id、fileIdrequestId(石墨在 Header 里带)| 误区 | 实际影响 | 正确做法 |
|---|---|---|
| 把回调返回缓存到接入方侧 | 用户权限被回收后仍能编辑/预览 | 实时从业务库计算,回调里不要内置 TTL |
/admin/* 接口按"当前用户"过滤数据 | 跨表格引用拉不到对方文件 | 系统回调与具体用户无关,按文件维度返回 |
| 用同一个 Token 校验逻辑同时处理 Type 0 / Type 3 | Type 3 永远校验失败 | 先看 X-WebOffice-Credential-Type,再分支 |
| 团队/部门接口直接 404 | 触发 10005,编辑器侧栏白屏 | 返回空数组 [],结构合法即可 |
permissions 全部默认 true | 文档可被任意人删除/导出 | 按业务真实权限返回,至少给创建者 manageable: true |
| 事件推送同步处理重业务 | 石墨侧超时重试,事件被重复处理 | 先 200 OK 入队,重业务异步消费 |
| 回调地址用了 HTTP(非 HTTPS) | 生产环境被拦截或泄露 Token | 生产环境必须 HTTPS |
| 不校验 Signature 直接信任 | 任何人构造请求都能伪装石墨调用 | Type 3 必须校验签名和 exp |
| Token 过期不清晰报错 | 编辑器卡在加载态 | 过期返回 401 + 明确 message,便于前端刷凭证重连 |