為 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。 |
Wanta