# 如何配置 Salesforce 集成

**URL:** <https://meta.discourse.org/t/how-to-configure-the-salesforce-integration/417136>\
**Category:** Integrations\
**Tags:** salesforce, how-to, platforms\
**Created:** [2026 年11 月 12 日 18:59 UTC](https://meta.discourse.org/t/how-to-configure-the-salesforce-integration/417136 "2026-11-12T18:59:57Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![lindsey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lindsey/32/318210_2.png) [@lindsey](https://meta.discourse.org/u/lindsey)\
发布日期： [2026 年11 月 12 日 18:59 UTC](https://meta.discourse.org/t/how-to-configure-the-salesforce-integration/417136/1 "2026-11-12T18:59:57Z")

</div>

> 🔖 本指南介绍了使用 [Discourse Salesforce](https://meta.discourse.org/t/discourse-salesforce/218267) 插件将 Discourse 连接到 Salesforce 所需的配置步骤。
> 
> :discourse: [Discourse Salesforce](https://meta.discourse.org/t/discourse-salesforce/218267) 仅在 Enterprise（企业）套餐中提供。
> 
> 🙋 所需用户级别：管理员

## 步骤 0：确定组织中合适的人员

在 Discourse 中执行任何操作之前，首先确保您知道组织中应涉及哪些合适的人员，以便处理 Salesforce 端所需的操作。

### Salesforce 管理员

**他们是谁：** 在大多数组织中，这通常是您的团队称为“Salesforce 管理员”的人——负责管理您 Salesforce 组织配置的人，不一定是您的 IT 系统管理员。

**他们做什么：** 负责在 Salesforce 端进行初始设置，包括在 Salesforce Setup（设置）中创建外部客户端应用（External Client App）或连接的应用（Connected App），配置 OAuth 设置，并获取 Consumer Key（客户端密钥）和 Consumer Secret（客户端密码）。

**他们需要什么：** 需要访问 Salesforce **Setup（设置）** ，特别是 **External Client App Manager（外部客户端应用管理器）** 。在 Salesforce 中，这需要 **Customize Application（自定义应用）** 系统权限。此权限包含在标准的 **System Administrator（系统管理员）** 配置文件中。如果执行设置的人员没有系统管理员配置文件，Salesforce 管理员需要授予他们一个包含“Customize Application（自定义应用）”的权限集。

### Salesforce 集成用户

**他们是谁：** 其账户凭据被 Discourse 插件用于向 Salesforce 发起 API 调用的一名 Salesforce 用户。

**他们做什么：** 提供用户名，该用户名填入 Discourse Salesforce 设置中的 **salesforce username（Salesforce 用户名）** 设置中，以便促进从 Discourse 到 Salesforce 的所有 API 调用。

**他们需要什么：** 此用户必须拥有：

| 权限 | 需要原因 |
| --- | --- |
| **API Enabled（启用 API）** | 任何 Salesforce API 访问所需的权限 |
| **Lead（潜在客户）的创建、读取、编辑权限** | 从 Discourse 用户创建并关联潜在客户 |
| **Contact（联系人）的创建、读取、编辑权限** | 从 Discourse 用户创建并关联联系人 |
| **Case（案例）的创建、读取、编辑权限** | 从 Discourse 主题创建案例 |
| **Case Comment（案例评论）的创建权限** | 将主题回复同步为案例评论 |
| **FeedItem（动态）（Chatter）的创建权限** | 将主题活动发布到 Chatter |

> **注意** ：Salesforce 集成用户可以是与 Salesforce 管理员相同的同一人。但是，出于安全最佳实践，我们建议使用单独的、权限范围更窄的账户作为集成用户。

## 步骤 1：生成证书和私钥

> **角色：** Discourse 管理员

Discourse Salesforce 使用 JWT Bearer 流程与 Salesforce 进行身份验证。这需要一对 RSA 密钥：一个 **公共证书** ，Salesforce 用它来验证插件的身份；以及一个 **私钥** ，Discourse 用它来签署其请求。

1. 按照[这些说明](https://developer.salesforce.com/docs/platform/sfdx-dev/guide/sfdx-dev-auth-key-and-cert.html)生成密钥对：
  - `server.crt` - 一个公共证书，证明 Discourse 是授权的应用
  - `server.key` - 一个私钥，用于签署 Discourse 向 Salesforce 发出的 API 请求

2. 将 `server.crt` 文件发送给您的 Salesforce 管理员，以便他们在步骤 3 中上传该文件。
3. 保留 `server.key`，以便在步骤 5 中粘贴到 Discourse Salesforce 设置中。

## 步骤 2：在 Salesforce 中创建外部客户端应用

> **角色：** Salesforce 管理员

1. 登录 Salesforce。

2. 点击右上角的 **齿轮图标** (⚙)，然后选择 **Setup（设置）** 。

3. 在快速查找框中，搜索 **External Client App Manager（外部客户端应用管理器）** 并选择它。

4. 点击 **New External Client App（新建外部客户端应用）** 。

> **注意：** 这些步骤使用 Salesforce Spring '25 中引入的 **External Client App Manager（外部客户端应用管理器）** 。如果您的组织使用的是较旧的版本，界面可能显示为 **App Manager（应用管理器）** 或 **Connected Apps（连接的应用）** ——底层设置是相同的。

## 步骤 3：填写基本信息和 OAuth 设置

> **角色** ：Salesforce 管理员

1. 填写 **Basic Information（基本信息）** 部分（必填项包括 App Name（应用名称）和 Contact Email（联系电子邮件））。

2. 展开 **API (Enable OAuth Settings)（API（启用 OAuth 设置））** 部分，并勾选 **Enable OAuth（启用 OAuth）** 设置。

3. 在此部分中配置以下设置：

4. 在 **Certificate Upload（证书上传）** 下，点击 Upload files（上传文件），并上传步骤 1 中的 `server.crt` 文件。

5. 点击 **Create（创建）** 。

## 步骤 4：获取 Consumer Key 和 Consumer Secret

> **角色：** Salesforce 管理员

1. 在新创建的外部客户端应用上，点击 **Settings（设置）** 选项卡。

2. 向下滚动并展开 **OAuth Settings（OAuth 设置）** 。

3. 点击 **Consumer Key and Secret（客户端密钥和客户端密码）** 。

4. 提示时重新输入您的 Salesforce 登录凭据。

5. 复制 **Consumer Key（客户端密钥）** 和 **Consumer Secret（客户端密码）** ，并将它们发送给您的 Discourse 管理员，用于步骤 5。

## 步骤 5：配置 Discourse 插件设置

> **角色：** Discourse 管理员

1. 在 Discourse 中，前往 **Admin（管理员）** → **Plugins（插件）** → **Salesforce** → **Settings（设置）** 。

2. 填写以下设置：

3. 点击 **Save changes（保存更改）** 。

## 步骤 6：在 Salesforce 中授权 Discourse 应用

> **角色：** Salesforce 集成用户

1. 前往 `https://<your-discourse-site>/salesforce/admin/authorize`，将 `<your-discourse-site>` 替换为您 Discourse 站点的完整 URL（例如 `meta.discourse.org`）。
2. 您将被重定向到 Salesforce，并提示您授权该应用。
3. 登录 Salesforce 并授予该应用访问权限。

完成此步骤后，一切应已就绪。您可以通过前往 Discourse 中的任何用户资料来确认其正常工作——管理员菜单中应出现 **Sync with Salesforce（与 Salesforce 同步）** 选项。

## 故障排除

如果设置后插件无法工作，请首先检查以下内容：

- **管理员仪表板健康检查** ：如果配置错误，插件会在 `/admin` 中显示两个警报：

- **启用详细日志记录** ：打开 `salesforce_auth_verbose_logging` 站点设置，以将详细的身份验证输出写入 Discourse 的 `/logs`。常见错误和原因：

| 症状 | 可能的原因 |
| --- | --- |
| 创建潜在客户或联系人时出现“Insufficient privileges（权限不足）” | 集成用户没有潜在客户或联系人对象的创建/编辑权限 |
| 创建案例时出现“Insufficient privileges（权限不足）” | 集成用户缺少案例或案例评论权限 |
| 授权步骤中出现“Invalid grant（无效授予）” | RSA 密钥与步骤 3 中上传的证书不匹配，或未启用 JWT Bearer 流程 |
| 创建潜在客户或联系人时出现“DUPLICATE\_VALUE（重复值）”错误 | 如果用户已存在于 Salesforce 中，这是预期行为——插件会处理此情况，但有关详细信息，请参阅插件主要文档 |
| Chatter 帖子未出现 | 集成用户可能没有 FeedItem（动态）创建权限 |
