为 OpenConnector 创建 Slack OAuth app
当 OpenConnector 需要通过 slack service 读取 Slack conversations、列出 users、发送消息、上传文件或管理 reactions 时,使用 Slack OAuth app。
OpenConnector service
| Service ID | Provider | Auth type |
|---|---|---|
slack | Slack | OAuth2 |
OpenConnector 的 Slack provider 使用 Slack OAuth v2,请求的 Slack scopes 包括 channels:read、groups:read、im:read、mpim:read、history scopes、file scopes、users:read、chat:write、im:write 和 reaction scopes 等。
前置条件
- 一个正在运行的 OpenConnector runtime。
- 有权限为目标 workspace 创建或管理 Slack app。
- 有权限在 Slack workspace 中安装 app,或可以让 workspace owner/admin 审批安装。
- 用户在浏览器中打开的 OpenConnector origin,例如
http://localhost:3000或https://connect.example.com。
第 1 步:确定 OpenConnector callback URL
在 OpenConnector origin 后拼接 /oauth/callback,得到 callback URL。
本地测试使用 http://localhost:3000/oauth/callback。如果 Slack 不接受本地 callback URL,请通过 HTTPS tunnel 或公开域名暴露 OpenConnector,设置 OOMOL_CONNECT_ORIGIN,重启后使用公开 callback URL,例如 https://connect.example.com/oauth/callback。
第 2 步:创建 Slack app
- 创建一个新 app。
- 选择开发或测试用的 workspace。
- 打开 OAuth & Permissions。
- 在 redirect URLs 中添加 OpenConnector 的准确 callback URL。
- 添加 OpenConnector actions 需要的 bot token scopes。
- 保存 app 设置。
Slack 官方文档见 Installing with OAuth,scope 列表见 Scopes。
第 3 步:复制 client credentials
打开 Slack app 的 Basic Information,复制:
| Slack 字段 | OpenConnector 字段 |
|---|---|
| Client ID | clientId |
| Client Secret | clientSecret |
不要把 bot token 当成 OAuth client secret。OpenConnector 会启动 OAuth flow,并在授权完成后保存 Slack credential。
第 4 步:在 OpenConnector 中保存 Slack client
优先使用 OpenConnector Web 控制台:
- 打开 OpenConnector Web 控制台,例如
http://localhost:3000。 - 打开 Providers,选择 Slack。
- 点击 Configure OAuth Client 或 Edit OAuth Client。
- 粘贴 Slack client ID 和 client secret。
- 点击 Save OAuth Client。
第 5 步:连接并测试
保存 OAuth client 后,在 Slack provider 页面点击 Connect。选择 Slack workspace,批准 app,回到 OpenConnector,并确认 provider 页面显示 workspace 已连接。
低风险测试 action 包括 slack.list_conversations、slack.list_channels 和 slack.list_users。
排查建议
| 现象 | 检查项 |
|---|---|
| Slack 拒绝 redirect URL | 确认 Slack redirect URL 是 <openconnector-origin>/oauth/callback。如果 Slack 要求 HTTPS,请使用 HTTPS 公开 origin 并设置 OOMOL_CONNECT_ORIGIN。 |
| App 无法安装 | 如果 workspace 限制 app 安装,请让 Slack workspace owner 或 admin 审批 app。 |
| 找不到 channel | 可见性取决于 scopes、workspace policy,以及 app 是否能访问该 channel。Private channel 通常需要邀请 app。 |
| 消息动作失败 | 确认 app 有 chat:write 等写入 scopes,并且能访问目标 conversation。 |
| 修改 scopes 后没有生效 | 修改 scopes 后重新安装或重新连接 Slack,让新权限写入 connected credential。 |