Skip to main content
OAuth 应用允许第三方应用代表用户访问 Teable。本指南介绍如何创建和配置 OAuth 应用、实现 OAuth 2.0 授权流程,以及使用访问令牌与 Teable API 交互。 Teable 支持两种 OAuth 2.0 授权模式:
  • 授权码 + 客户端密钥:适用于有后端服务器的 Web 应用
  • 授权码 + PKCE:适用于原生应用、CLI 工具、单页应用等无法安全存储密钥的公共客户端

创建 OAuth 应用

  1. 进入 Teable 账户的设置 > OAuth 应用页面。
  2. 点击新增 OAuth 应用创建新应用。
  3. 填写必要信息:
    • OAuth 应用名称:应用的描述性名称
    • 主页 URL:应用网站的完整 URL
    • 回调 URL:用户授权后重定向的 URL
    • 权限范围:应用所需的权限
  4. 创建应用后,生成客户端密钥。请务必复制并安全保存——您将无法再次查看。
您将获得一个客户端 ID,并需要生成客户端密钥。请妥善保管这些凭据,切勿在客户端代码中暴露。如果使用 PKCE 模式,则不需要客户端密钥。

可用权限范围

权限范围定义了 OAuth 应用可以执行的操作。可用范围按资源类型组织:
只请求应用实际需要的权限范围。用户在授权时会看到请求的权限列表。

OAuth 2.0 授权码流程

Teable 实现了标准的 OAuth 2.0 授权码流程:

步骤 1:将用户重定向到授权页面

使用应用参数将用户引导到授权端点:
查询参数: 示例:

步骤 2:用户授权

用户将看到授权页面,显示:
  • 您的应用名称和标志
  • 请求的权限(范围)
  • 批准或拒绝选项
如果用户之前已授权过您的应用(默认 7 天内有效),将直接重定向而不再显示授权页面。

步骤 3:处理回调

用户批准(或拒绝)后,Teable 会重定向到您的回调 URL: 成功时:
拒绝时:

步骤 4:用授权码换取令牌

用授权码换取访问令牌和刷新令牌:
请求体: 请求示例:
响应:

PKCE 授权流程

PKCE(Proof Key for Code Exchange)是为无法安全存储客户端密钥的应用设计的授权模式,如原生桌面应用、移动应用、CLI 工具或单页应用。

步骤 1:生成 PKCE 参数

在发起授权前,客户端需要生成一对 PKCE 参数:

步骤 2:将用户重定向到授权页面

查询参数: 示例:
PKCE 模式下,redirect_uri 支持 loopback 地址(http://127.0.0.1http://[::1]http://localhost),端口可以灵活匹配,无需精确注册每个端口。

步骤 3:处理回调

与标准授权码流程相同,用户批准后会携带 code 重定向到您的回调地址。

步骤 4:用授权码 + code_verifier 换取令牌

请求体:
PKCE 模式不需要 client_secret,用 code_verifier 代替密钥来验证客户端身份。
请求示例:
响应格式与标准授权码流程相同。

使用访问令牌

在 API 请求的 Authorization 头中包含访问令牌:
通常在获取令牌后,第一步是获取当前用户可访问的所有 Base 列表:
该接口返回当前用户有权限访问的所有 Base,可从中获取 baseId 用于后续 API 调用。

刷新访问令牌

当访问令牌过期时,使用刷新令牌获取新的访问令牌:
请求体: 请求示例:
刷新后,之前的刷新令牌将失效(Refresh Token Rotation)。请务必保存响应中的新刷新令牌。

撤销访问权限

OAuth 应用所有者

撤销该应用对所有用户的访问权限(仅应用创建者可操作):
这将删除所有用户的授权记录和令牌,使该应用完全无法访问任何用户的数据。

用户撤销自己的授权

撤销当前用户对某个应用的授权:
这只会使当前用户的访问令牌和刷新令牌失效,不影响其他用户。 用户也可以通过已授权应用设置页面撤销。

应用程序自行撤销

应用程序可以使用 Access Token 撤销自己的访问权限:
此端点仅接受 Access Token 认证,不支持 Session 认证。

令牌过期时间

错误处理

常见错误响应:

最佳实践

  1. 选择合适的模式:有后端服务器的 Web 应用使用客户端密钥模式,原生应用/CLI/SPA 使用 PKCE 模式
  2. 安全存储密钥:切勿在客户端代码中暴露您的客户端密钥
  3. 使用 state 参数:始终包含随机的 state 参数以防止 CSRF 攻击
  4. 请求最小权限范围:只请求应用实际需要的权限
  5. 处理令牌刷新:在令牌过期前实现自动刷新
  6. 安全存储令牌:将访问令牌和刷新令牌安全地存储在服务器端

完整示例

Node.js(授权码 + 客户端密钥)

Python(PKCE 模式,适用于 CLI 工具)

最后修改于 2026年3月5日