---
title: 為 OpenConnector 建立 Slack OAuth app
description: 建立 Slack app，設定 OAuth redirect URLs 和 scopes，然後把 Slack 連接到自部署的
  OOMOL OpenConnector runtime。
lang: zh-TW
canonical_url: https://oomol.com/zh-tw/docs/openconnector-slack-oauth-app/
markdown_url: https://oomol.com/zh-tw/docs/openconnector-slack-oauth-app.md
---

# 為 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

在 [Slack API app management](https://api.slack.com/apps) 中：

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](https://docs.slack.dev/authentication/installing-with-oauth)，scope 列表見 [Scopes](https://docs.slack.dev/reference/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 控制台：

1. 開啟 OpenConnector Web 控制台，例如 `http://localhost:3000`。
2. 開啟 **Providers**，選擇 **Slack**。
3. 點擊 **Configure OAuth Client** 或 **Edit 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_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。 |
