Salesforce 扩展程序

<ph type="x-smartling-placeholder"></ph> 您正在查看 Apigee Edge 文档。
转到 Apigee X 文档
信息

<ph type="x-smartling-placeholder">

版本:1.0.1

访问 Salesforce 账号中的数据。插入、更新、检索和查询数据。

本文提供了配置和使用此扩展程序的参考信息。

前提条件

本文提供了配置和使用此扩展程序的参考信息。在通过 API 代理通过 ExtensionCallout 政策使用扩展程序之前,您必须:

  1. 创建一个 RSA x509 私钥/认证对。

    配置扩展程序时,您需要将私钥 (.key) 用作凭据。您在创建关联的应用时需要使用该证书 (.crt) 文件,以便允许扩展程序访问 Salesforce。

    openssl req -x509 -sha256 -nodes -days 36500 -newkey rsa:2048 -keyout salesforce.key -out salesforce.crt
    
    
  2. 设置关联的应用。

    与 Salesforce 关联的应用将提供对 Salesforce 扩展程序的访问权限。请参阅下文,了解如何设置应用。

  3. 获取已连接应用的使用方密钥。该扩展程序在向应用进行身份验证时将使用此 ID。

    1. 在 Salesforce 设置中的左侧导航栏中,转到应用 >应用管理器
    2. 在列表中,找到您创建的已关联的应用。
    3. 在应用行右侧的下拉菜单中,点击查看
    4. API(启用 OAuth 设置)下,找到使用方键值,并将其值复制到安全位置,以便在配置扩展程序时使用。

设置关联的应用以供扩展程序访问

您需要先创建 Salesforce 关联的应用,此扩展程序可以通过该应用与 Salesforce 连接,然后 Salesforce 扩展程序才能访问 Salesforce。

在 Salesforce 中,关联的应用为外部应用提供了一种通过 API 连接到 Salesforce 的方式。

设置关联的应用

  1. 登录 Salesforce
  2. 点击右上角的齿轮图标,然后点击设置
  3. 在左侧导航栏中,展开应用 > 应用管理器
  4. 应用管理器页面中,点击新建关联的应用
  5. 基本信息下,填写必填字段。这些值用于记账;它们不会被扩展程序使用
  6. API(启用 OAuth 设置)下,选中启用 OAuth 设置复选框。
  7. 请输入一个回调网址,虽然该扩展程序并不会使用该网址。您可以使用 http://localhost/ 或其他一些占位主机。
  8. 选中使用数字签名复选框。
  9. Use digital signatures(使用数字签名)下,点击 Choose File(选择文件)以查找并上传您之前生成的 salesforce.crt
  10. 选定的 OAuth 范围部分,添加以下内容,使其显示在选定的 OAuth 范围下: <ph type="x-smartling-placeholder">
      </ph>
    • 访问和管理您的数据 (api)
    • 随时代表您执行请求(refresh_token、offline_access)
  11. 点击保存。如果存在任何错误,您可能需要重新生成并上传 salesforce.crt 文件。
  12. 在出现的应用页面上,点击管理
  13. 在刚刚创建的应用的“应用管理器”页面上,点击修改政策
  14. OAuth 政策下,点击允许的用户下拉菜单,然后点击管理员批准的用户已获得预先授权
  15. 点击保存
  16. 返回应用页面,在配置文件下,点击管理配置文件
  17. 应用配置文件分配页面上,选中可以使用此应用的用户个人资料对应的复选框。

    请务必根据您在配置扩展程序时要使用的用户名所对应的用户选择一份个人资料。此外,请确保至少有系统管理员用户访问此应用。

    您可以在 Salesforce 中查看该用户的配置文件设置。在设置区域,展开用户 >用户,找到该扩展程序所代表的用户,然后在个人资料列中找到该用户的个人资料。

  18. 点击保存

Salesforce 简介

Salesforce 是一个客户关系管理 (CRM) 平台。客户关系管理可帮助各公司了解其客户的通过更好地管理客户信息和互动来满足客户需求和解决问题 - 所有这一切都在一个始终可通过任何桌面设备或设备访问的平台上实现。

操作

<ph type="x-smartling-placeholder">

insert

sObject 类型的形式插入记录。

语法

<Action>insert</Action>
<Input><![CDATA[{
  "sobject": records-sObject-type,
  "records":[ records-to-insert ],
  "allOrNone": true | false
}]]></Input>

示例

<Action>insert</Action>
<Input><![CDATA[{
  "sobject": "Account",
  "records":[
    { "Name": "MyAccountName" }
  ],
  "allOrNone": true
}]]></Input>

请求参数

参数 说明 类型 默认 必填
对象 要插入的记录的 sObject 类型 字符串 无。 是。
记录 JSON 格式的 sObject 记录数组。最大值:1000。 数组 无。 是。
allOrNone 如果更新的任何部分失败,则 true 会使整个更新失败。 布尔值 false 数量

响应

包含插入操作结果的 results 数组。

{
  results: [
    { id: '0011U00000LQ76KQAT', success: true, errors: [] },
    { id: '0011U00000LQ76LQAT', success: true, errors: [] }
  ]
}
属性 说明 类型 默认 必填
results[*].id 为新记录生成的 sObject ID。 字符串 无。 是。
results[*].success 如果成功插入该记录,则为 true 布尔值 无。 是。
results[*].errors 执行期间捕获的错误数组(如果有)。 数组 无。 是。

update

更新 Salesforce 记录。

语法

<Action>update</Action>
<Input><![CDATA[{
  "sobject": records-sObject-type,
  "records": [ records-to-update ],
  "allOrNone": true | false
}]]></Input>

示例

<Action>update</Action>
<Input><![CDATA[{
  "sobject": "Account",
  "records":[
    { 
      "id":"0011U00000LQ76KQAT",
      "Name": "MyNewAccountName" 
    }
  ],
  "allOrNone": true
}]]></Input>

请求参数

参数 说明 类型 默认 必填
对象 要更新的记录的 sObject 类型 字符串 无。 是。
记录 JSON 格式的 sObject 记录数组。要更新的每条记录都必须包含相应记录的 ID 值。最大值:1000。 数组 无。 是。
allOrNone 如果更新的任何部分失败,则 true 会使整个更新失败。 布尔值 false 数量

响应

包含更新结果的 results 数组。

{
  results: [
    { id: '0011U00000LQ76KQAT', success: true, errors: [] },
    { id: '0011U00000LQ76LQAT', success: true, errors: [] }
  ]
}
参数 说明 类型 默认 必填
results[*].id 为更新的记录生成的 sObject ID。 字符串 无。 是。
results[*].success 如果成功插入该记录,则为 true 布尔值 无。 是。
results[*].errors 执行期间捕获的错误数组(如果有)。 数组 无。 是。

retrieve

按 ID 将记录检索为 sObject。返回 sObject 类型的所有字段。

语法

<Action>retrieve</Action>
<Input><![CDATA[{
  "sobject": records-sObject-type,
  "ids":[ IDs-of-records-to-retrieve ]
}]]></Input>

示例

<Action>retrieve</Action>
<Input><![CDATA[{
  "sobject": "Account",
  "ids":["0011U00000LQ76KQAT"]
}]]></Input>

请求参数

参数 说明 类型 默认 必填
对象 要检索的记录的 sObject 类型 字符串 无。 是。
ids 要检索的 sObject ID 记录数组。最大值:1000。 数组 无。 是。
allOrNone 如果请求的任何部分失败,则使用 true 使整个操作失败。 布尔值 false 数量

响应

以 JSON 表示的 sObject 的 records 数组。请注意,即使属性值为 null,JSON 中也包含了对象的所有属性。

{
  records: [
    { sobject-json },
    { sobject-json }
  ]
}

querySOQL

使用 Salesforce 对象查询语言 (SOQL) 查询 Salesforce.com。

语法

<Action>querySOQL</Action>
<Input><![CDATA[{
  "soql": soql-query-statement
}]]></Input>

示例

<Action>querySOQL</Action>
<Input><![CDATA[{
  "soql": "SELECT Id, Name FROM Account"
}]]></Input>

请求参数

参数 说明 类型 默认 必填
Soql 用于查询的 SOQL 语句。 字符串 无。 是。

响应

查询结果。

{
  totalSize: 2,
  records: [
    {
      attributes: { attributes-of-record },
      Id: '0011U00000LQ76KQAT',
      Name: 'AccountName1'
    },
    {
      attributes: { attributes-of-record },
      Id: '0011U00000LQ76LQAT',
      Name: 'AccountName2'
    }
  ],
  done: true
}
参数 说明 类型 默认 必填
totalSize 查询返回的记录数。 整数 无。 是。
记录 作为 JSON 中的 sObject 返回的记录数组。最大值:1000。 数组 无。 是。
完成 如果查询操作已完成,则返回 true 布尔值 无。 是。

list

列出 Salesforce.com 记录。返回指定 sObject 类型的所有字段。

语法

<Action>list</Action>
<Input><![CDATA[{
  "sobject": records-sObject-type,
  "limit": max-number-of-records,
  "offset": record-index-at-which-to-begin-response-set
}]]></Input>

示例

<Action>list</Action>
<Input><![CDATA[{
  "sobject": "Account",
  "limit": 1000,
  "offset": 0
}]]></Input>

请求参数

参数 说明 类型 默认 必填
对象 要列出的记录的 sObject 类型 字符串 无。 是。
限制 要返回的记录数上限。 整数 1000 数量
offset 要列出的记录的偏移量。 整数 0 数量

响应

包含以 JSON 格式列出的 sObject 的 records 数组。

{
  records: [
    { sobject-json },
    { sobject-json }
  ]
}

del

删除具有指定 ID 的记录。

语法

<Action>del</Action>
<Input><![CDATA[{
  "sobject": records-sObject-type,
  "ids":[ IDs-of-records-to-retrieve ]
}]]></Input>

示例

<Action>del</Action>
<Input><![CDATA[{
  "sobject": "Account",
  "ids":["0011U00000LQ76KQAT"]
}]]></Input>

请求参数

参数 说明 类型 默认 必填
对象 要删除的记录的 sObject 类型 字符串 无。 是。
ids 要删除的记录的 sObject ID 数组。最大值:1000。 数组 无。 是。

响应

包含操作结果的 results 数组。

{
  results:[
    { id: '0011U00000LQ76KQAT', success: true, errors: [] },
    { id: '0011U00000LQ76LQAT', success: true, errors: [] }
  ]
}
属性 说明 类型 默认 必填
results[*].id 指定记录的 sObject ID。 字符串 无。 是。
results[*].success 如果记录操作成功,则为 true 布尔值 无。 是。
results[*].errors 执行期间捕获的错误数组(如果有)。 数组 无。 是。

getAccessToken

获取 Salesforce.com API 访问令牌。可用于查询 REST API。

语法

<Action>getAccessToken</Action>
<Input><![CDATA[{}]]></Input>

请求参数

无。

响应

JSON 格式的访问令牌。

{
  "accessToken":"00D1U0000014m3hqswvoM22I5GTw9EJrztlZ8eSSka88Q",
  "scope":"api",
  "instanceUrl": "https://na85.salesforce.com",
  "id": "https://login.salesforce.com/id/00D1U0004564mutUAA/0051U43214qecVQAQ",
  "tokenType": "Bearer"
}
属性 说明 类型 默认 必填
accessToken 访问令牌。 字符串 无。 是。
范围 令牌提供访问权限的范围。 字符串 无。 是。
instanceUrl Salesforce 组织使用的实例的网址。 字符串 无。 是。
id 已关联的应用的 ID。 字符串 无。 是。
tokenType 访问令牌的类型。 字符串 承载系统 是。

配置参考

在配置和部署此扩展程序以供在 API 代理中使用时,请使用以下代码。

常见的扩展属性

每个扩展程序都有以下属性。

属性 说明 默认 必需
name 您为扩展程序配置此名称。
packageName Apigee Edge 提供的扩展包的名称。
version 配置扩展程序所用的扩展程序软件包的版本号。
configuration 特定于您要添加的附加信息的配置值。请参阅此扩展程序软件包的属性

此扩展程序软件包的属性

为此扩展程序的以下配置属性指定值。

属性 说明 默认 必填
授权服务器网址 从 Salesforce 获取授权时使用的网址。通常为 https://login.salesforce.com 无。 是。
已关联的应用使用方密钥 Salesforce 为您创建的已连接应用提供的使用方键值。请参阅前提条件下的说明,了解如何检索您的使用方密钥。 无。 是。
凭据

在 Apigee Edge 控制台中使用时:您之前在前提条件下生成的 salesforce.key 文件的全部内容(包括 BEGINEND 标记)。

通过 Management API 发送时:从 salesforce.key 文件生成的 base64 编码值。

无。 是。
Salesforce 用户的用户名 您创建的关联的应用相关联的用户名。Salesforce 扩展程序将使用此 ID 从 Salesforce 获得授权。 无。 是。