---
author: OOMOL
author_url: https://oomol.com/zh-cn/about/
title: 为 OpenConnector 创建 Slack OAuth app
description: 创建 Slack app，配置 OAuth redirect URLs 和 scopes，然后把 Slack 连接到自部署的
  OOMOL OpenConnector runtime。
lang: zh-CN
canonical_url: https://oomol.com/zh-cn/docs/openconnector-slack-oauth-app/
markdown_url: https://oomol.com/zh-cn/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。 |
