概述
通过 OAuth 授权与 WebView 内嵌方式,将 Tencent eSign 电子签署能力集成到第三方应用。本指南面向集成方研发团队,覆盖从凭证准备到内嵌页集成的完整流程。
集成场景
集成方应用在工具栏或推广入口处嵌入两个功能入口:
- 发起签署 — 集成方应用完成 OAuth 授权后,调用 上传文件 拿到
FileId,再调用 获取内嵌页 URL 把FileId绑定到内嵌页 URL,最后用 WebView 打开内嵌页完成创建签署流程(设置接收人 → 放置签名区域 → 发送) - 签署状态 — 换取内嵌页 URL,WebView 直接显示当前账号在选定 Space 下的合同列表
内嵌页面由 Tencent eSign 提供,支持集成方品牌定制(详见 内嵌页交互 - 品牌定制),通过 webview token 与 Tencent eSign 服务端交互。
接入模式
| 模式 | 当前支持 | 说明 |
|---|---|---|
| WebView 内嵌 | 已支持 | 集成方提供入口与文件,UI 由 Tencent eSign 内嵌页承载 |
| 纯 API(Headless) | 规划中 | 集成方自行实现发起人 UI;当前不在本指南覆盖范围 |
| 仅签署嵌入(接收方 UI) | 规划中 | 仅在收件人侧使用 Tencent eSign 内嵌签署页 |
ℹ️
当本指南流程不能满足业务需求时,请联系 Tencent eSign 商务或技术对接同学评估其他接入模式。
OAuth 授权模式
本指南支持两种授权模式,适用于不同集成场景:
- 开放模式(默认) — 面向 C 端用户,每个邮箱可独立发起授权,Space 由用户在 Consent 页自行选择或系统自动创建,授权 URL 无需传
space_id - 指定 Space 模式 — 面向企业/组织场景,授权对象限定在集成方预先指定的 Space,需配合 预添加成员 接口预添加成员,授权 URL 同时传入
space_id+login_hint,详见 OAuth 授权流程 - 指定 Space 模式
核心概念
| 术语 | 说明 |
|---|---|
| 集成方 | 接入 Tencent eSign 的第三方厂商;本指南中默认指代集成方研发团队/工程主体 |
| 集成方应用 | 集成方提供给最终用户使用的应用程序(含其前端与后端,不区分进程边界)。本指南统一以”集成方应用”指代调用 Open API 的一方 |
| 集成应用 / 应用安装 | Tencent eSign 侧的 OAuth 应用注册条目;“安装”指 Space 同意接入该 OAuth 应用,与”集成方应用”不同——前者是 Tencent eSign 侧的资源记录,后者是集成方自己的程序 |
| Space | Tencent eSign 多租户空间,有两种语义:(a) 集成方 Space — 集成方在控制台注册账户时创建,用于发布 OAuth App 与绑定计费资源包;(b) 用户 Space — 终端签署用户用于发起/接收签署、安装第三方 App。两者数据相互独立。后文如未特别标注,“Space” 默认指 (b) 用户 Space |
| 集成方 Space | 集成方注册控制台账户后创建的 Space,仅用于 App 发布与计费;不参与 OAuth 授权流程中”用户选择 Space”步骤 |
| 管理员 / 普通成员 | (用户)Space 内的两类角色。仅管理员有权为 Space 安装第三方集成应用;普通成员可使用已安装的应用发起签署 |
| OAuth 客户端 | OAuth 协议术语,指持有 client_id / client_secret 的一方,本接入中即集成方应用 |
| client_id / client_secret | OAuth 客户端凭证,由集成方在控制台集成方 Space 下创建 OAuth App 时生成 |
| PKCE | OAuth 2.1 防中间人扩展(code_verifier / code_challenge)。OAuth 客户端生成随机 code_verifier,对其取 SHA-256 后 base64url 编码得到 code_challenge。授权时传 code_challenge,换 token 时传 code_verifier 验证一致性 |
| access_token | OAuth 访问令牌,用于调用 Tencent eSign Open API(如换取 webview URL)。有效期 1 小时 |
| refresh_token | 用于在 access_token 过期后换取新 access_token,永久有效,刷新后新值替换旧值(滚动刷新,详见 OAuth 授权流程 - Token 生命周期) |
| webview token | 一次性签发的内嵌页会话令牌,绑定 user_id + space_id + app_id + 页面类型 + OperateParam,有效期由服务端定义。仅用于内嵌页与 Tencent eSign 服务端的交互 |
| WebView | 集成方应用内嵌的浏览器组件,用于加载 Tencent eSign Consent 页与内嵌页 |
| Consent 页 | 用户授权同意页面,由 Tencent eSign 提供 |
| 内嵌页 | 集成方在 WebView 中加载的 Tencent eSign 业务页(发起签署 / 签署状态) |
ℹ️
信封(Envelope)、接收人(Recipient)、签署控件(Tab)等签署流程核心概念详见 信封签署 - 场景说明。
关键约束
- 集成方走**第三方应用模式(third_party app)**接入
- 集成方先在 Tencent eSign 控制台自助注册账户(创建集成方 Space),由该 Space 管理员在控制台创建 OAuth App,控制台直接生成
client_id/client_secret。多地域场景下集成方需在每个地域分别注册并各自创建 App,凭证按地域隔离不通用(计费资源包同样按地域闭环) - 用户首次接入(双模式):
- 开放模式 — 集成方可在打开授权页时传入
login_hint(用户邮箱)供授权页预填;若该邮箱尚未在 Tencent eSign 注册,系统自动静默完成注册并创建默认 Space(该用户为管理员)。不需传space_id,由用户在授权页自行选择 Space - 指定 Space 模式 — 集成方同时传入
space_id+login_hint,系统不自动创建 Space;用户必须已通过 预添加成员 接口被预添加为该 Space 的待激活成员,授权时点「同意」即视为接受邀请并完成激活。详见 OAuth 授权流程 - 指定 Space 模式
- 开放模式 — 集成方可在打开授权页时传入
- 应用自动安装 — 用户在 Consent 页完成授权时,若当前 Space 尚未安装该集成应用且用户是管理员,Tencent eSign 自动完成安装,对用户无感
- 文件由集成方应用调用 上传文件 接口拿到
FileId后,通过 获取内嵌页 URL 接口的OperateParam.FileIds绑定到 webview token,内嵌页加载即可使用
职责分工
集成方负责
| 阶段 | 功能 | 说明 |
|---|---|---|
| 接入前 | 控制台账户与 App 管理 | 注册集成方 Space、创建 OAuth App、获取 / 重置 client_secret、绑定计费资源包;多地域逐一注册 |
| 运行时 | 应用 UI 入口 | 在工具栏 / 推广位添加发起签署 / 签署状态按钮 |
| 运行时 | PKCE 生成 | 集成方应用生成 code_verifier / code_challenge |
| 运行时 | OAuth 授权发起 | WebView 打开授权 URL,拦截自定义协议回调拿 auth code |
| 运行时 | 成员预添加(指定 Space 模式) | 调用 预添加成员 接口预添加目标用户为待激活成员 |
| 运行时 | token 换取与持久化 | 调用 令牌端点 换 access_token + refresh_token,按自身安全要求保管 |
| 运行时 | token 刷新 | access_token 过期前主动刷新 |
| 运行时 | 内嵌页 URL 获取 | 调用 获取内嵌页 URL 接口 |
| 运行时 | WebView 弹窗容器 | 加载 Tencent eSign 内嵌页 |
| 运行时 | 文件上传与传入 | 集成方应用调用 上传文件 拿 FileId,再通过 OperateParam.FileIds 绑定到 webview token |
| 运行时 | 自定义协议处理 | 签署完成深链接跳转与未安装回退(详见 内嵌页交互 - 签署完成后跳转) |
Tencent eSign 负责
| 功能 | 说明 |
|---|---|
| OAuth 授权页 | 支持 login_hint / lang 预填;展示 Space 列表与角色 |
| 应用自动安装 | 管理员首次授权时自动完成应用安装 |
| 内嵌页 URL 下发 | 验证 access_token,签发 webview token |
| webview token 验证 | 解出 user_id / space_id / 页面类型 |
| 信封创建与发送 | 内嵌页完成接收人/控件配置后发送 |
| 品牌定制 | 按集成方提交的品牌定制信息渲染内嵌页(详见 内嵌页交互 - 品牌定制) |
涉及接口
GETPOSTPOSTPOSTPOSTPOST
授权端点
/openapi/v1/oauth/auth
OAuth 授权入口,WebView 打开此 URL
令牌端点
/openapi/v1/oauth/token
换取或刷新 access_token
令牌撤销端点
/openapi/v1/oauth/revoke
主动撤销 access_token / refresh_token
上传文件
/openapi/v1/files/upload
上传待签署文件,获取 FileId
获取内嵌页 URL
/openapi/v1/embedded/views
用 access_token 换内嵌页 URL
预添加成员
/openapi/v1/members/add
指定 Space 模式专用:预添加目标用户为待激活成员