Salesforce 擴充功能

您正在查看 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

版本:1.0.5

存取 Salesforce 帳戶中的資料。插入、更新、擷取及查詢資料。

本內容提供設定和使用此擴充功能的參考資訊。

必要條件

本內容提供設定和使用此擴充功能的參考資訊。使用 ExtensionCallout 政策的 API Proxy 中的擴充功能前,您必須:

  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. 取得已連結應用程式的消費者金鑰。擴充功能會在驗證應用程式時使用這組金鑰。

    1. 在 Salesforce 設定的左側導覽面板中,依序前往「應用程式」>「應用程式管理工具」
    2. 在清單中找出您建立的已連結應用程式。
    3. 在應用程式列的右側下拉式選單中,按一下「查看」
    4. 在「API (啟用 OAuth 設定)」下方,找出「消費者金鑰」,並將其值複製到安全的地方,以便在設定擴充功能時使用。

設定要讓擴充功能存取的已連結應用程式

您必須先建立 Salesforce 連結應用程式,讓 Salesforce 擴充功能連上 Salesforce,才能讓擴充功能存取 Salesforce。

在 Salesforce 中,連結的應用程式可讓外部應用程式透過 API 連線至 Salesforce。

如何設定已連結的應用程式

  1. 登入 Salesforce
  2. 按一下右上方的齒輪圖示,然後點選「設定」
  3. 在左側導覽面板中,展開「應用程式」>「應用程式管理工具」
  4. 在「App Manager」頁面中,按一下「New Connected App」
  5. 在「基本資訊」下方填寫必填欄位。這些值是用於記錄,不會由擴充功能使用。
  6. 在「API (啟用 OAuth 設定)」下方,選取「啟用 OAuth 設定」核取方塊。
  7. 雖然擴充功能不會使用,但請輸入回呼網址。您可以使用 http://localhost/ 或其他預留位置主機。
  8. 選取「使用數位簽章」核取方塊。
  9. 在「Use digital signatures」下方,按一下「Choose File」,找出並上傳先前產生的 salesforce.crt
  10. 在「Selected OAuth Scopes」部分中,新增下列項目,並放在「Selected OAuth Scopes」下方:
    • 存取及管理資料 (API)
    • 隨時以您的名義執行要求 (refresh_token、offline_access)
  11. 按一下 [儲存]。如果發生任何錯誤,您可能需要重新產生並上傳 salesforce.crt 檔案。
  12. 在隨即顯示的應用程式頁面上,按一下「管理」
  13. 在您剛建立的應用程式管理員頁面中,按一下「編輯政策」
  14. 在「OAuth 政策」下方,按一下「允許的使用者」下拉式選單,然後點選「管理員核准的使用者已預先授權」
  15. 按一下 [儲存]
  16. 返回應用程式頁面,然後點選「Profiles」下方的「Manage Profiles」
  17. 在「應用程式設定檔指派」頁面中,勾選可使用此應用程式的使用者設定檔核取方塊。

    請務必選取與您在設定擴充功能時會使用的使用者名稱相對應的設定檔。此外,請確認至少有系統管理員使用者可存取這個應用程式。

    您可以在 Salesforce 中查看使用者的設定檔設定。在「設定」區域中,展開「使用者」>「使用者」,找出要由擴充功能代表的使用者,然後在「個人資料」欄中找出該使用者的個人資料。

  18. 按一下 [儲存]

關於 Salesforce

Salesforce 是客戶關係管理 (CRM) 平台,顧客關係管理可協助企業瞭解客戶需求並解決問題,方法是透過單一平台妥善管理客戶資訊和互動,且可隨時透過任何電腦或裝置存取。

動作

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 要插入的記錄 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 要更新的記錄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 陣列。請注意,即使屬性值為空值,物件的所有屬性都會包含在 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 要列出的記錄的 sObject 類型 字串 無。 是。
限制 要傳回的記錄數量上限。 整數 1000 不會。
碳補償 要列入清單的記錄偏移量。 整數 0 不會。

回應

records 陣列,其中包含以 JSON 格式列出的 sObject。

{
  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 要刪除的記錄 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 檔案內容。透過管理 API 傳送時,這是從 salesforce.key 檔案產生的 base64 編碼值。 無。 是。
Salesforce 使用者的使用者名稱 您建立的已連結應用程式相關聯的使用者名稱。Salesforce 擴充功能會使用這個值,向 Salesforce 取得授權。 無。 是。