浏览文档

为 OpenConnector 创建 Slack OAuth app

当 OpenConnector 需要通过 slack service 读取 Slack conversations、列出 users、发送消息、上传文件或管理 reactions 时,使用 Slack OAuth app。

OpenConnector service

Service IDProviderAuth type
slackSlackOAuth2

OpenConnector 的 Slack provider 使用 Slack OAuth v2,请求的 Slack scopes 包括 channels:readgroups:readim:readmpim:read、history scopes、file scopes、users:readchat:writeim:write 和 reaction scopes 等。

前置条件

  • 一个正在运行的 OpenConnector runtime。
  • 有权限为目标 workspace 创建或管理 Slack app。
  • 有权限在 Slack workspace 中安装 app,或可以让 workspace owner/admin 审批安装。
  • 用户在浏览器中打开的 OpenConnector origin,例如 http://localhost:3000https://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

Slack API app management 中:

  1. 创建一个新 app。
  2. 选择开发或测试用的 workspace。
  3. 打开 OAuth & Permissions
  4. 在 redirect URLs 中添加 OpenConnector 的准确 callback URL。
  5. 添加 OpenConnector actions 需要的 bot token scopes。
  6. 保存 app 设置。

Slack 官方文档见 Installing with OAuth,scope 列表见 Scopes

第 3 步:复制 client credentials

打开 Slack app 的 Basic Information,复制:

Slack 字段OpenConnector 字段
Client IDclientId
Client SecretclientSecret

不要把 bot token 当成 OAuth client secret。OpenConnector 会启动 OAuth flow,并在授权完成后保存 Slack credential。

第 4 步:在 OpenConnector 中保存 Slack client

优先使用 OpenConnector Web 控制台:

  1. 打开 OpenConnector Web 控制台,例如 http://localhost:3000
  2. 打开 Providers,选择 Slack
  3. 点击 Configure OAuth ClientEdit OAuth Client
  4. 粘贴 Slack client ID 和 client secret。
  5. 点击 Save OAuth Client

第 5 步:连接并测试

保存 OAuth client 后,在 Slack provider 页面点击 Connect。选择 Slack workspace,批准 app,回到 OpenConnector,并确认 provider 页面显示 workspace 已连接。

低风险测试 action 包括 slack.list_conversationsslack.list_channelsslack.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。