为什么要有回调接口?#
石墨文档中台采用无状态架构设计,不会存储接入方的用户信息、文件信息、权限信息等敏感数据。在需要用到这些信息的时候,石墨服务端会通过对应的回调接口来实时获取。这样做的好处是,接入方的用户、文件、权限等信息发生改变时,无需向石墨上报和同步信息,避免了潜在数据泄露风险和数据一致性风险。正确实现和优化回调接口,是确保石墨文档集成成功的关键因素。建议接入方在设计阶段就充分考虑安全性、性能和可用性要求 ,确保为用户提供流畅、安全的文档协作体验。
回调接口机制详解#
工作原理#
回调接口分类#
| 分类 | 触发方式 | 主要用途 | 典型场景 |
|---|
| 数据获取类 | 石墨被动调用 | 获取用户、文件、权限信息 | 用户身份验证、权限校验 |
| 事件推送类 | 石墨主动推送 | 通知业务事件发生 | 文档更新、协作状态变化 |
回调接口地址#
回调凭证类型#
回调接口存在不同的触发场景,因此需要通过不同的凭证类型进行身份验证。石墨服务端会在 HTTP Header 中指定 X-Shimo-Credential-Type 来标识凭证类型。凭证类型概览#
| 凭证类型 | 数值 | 触发场景 | 验证方式 | 典型用例 |
|---|
| 文档用户操作触发 | 0 | 用户主动操作 | Token 验证 | 打开文档、编辑内容、权限校验 |
| 石墨系统主动触发 | 3 | 石墨中台主动调用 | 签名验证 | 跨表格引用更新、定时任务 |
用户操作触发类型 (Type = 0)#
系统主动触发类型 (Type = 3)#
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.4.0</version>
</dependency>