Salesforce
Adobe Experience Platform可讓您從外部來源擷取資料,同時使用Platform服務來建構、加標籤及增強傳入資料。 您可以從多種來源(例如Adobe應用程式、雲端儲存、資料庫和許多其他來源)內嵌資料。
Experience Platform支援從協力廠商CRM系統擷取資料。 CRM提供者的支援包括Salesforce。
設定您在Azure上Experience Platform的Salesforce來源 azure
請依照下列步驟,瞭解如何設定Salesforce帳戶以在Azure上Experience Platform。
IP位址允許清單
使用來源聯結器之前,必須將IP位址清單新增至允許清單。 未能將您區域特定的IP位址新增到允許清單可能會導致使用來源時的錯誤或效能不佳。 如需詳細資訊,請參閱IP位址允許清單頁面。
從Salesforce到XDM的欄位對應
若要在Salesforce和Platform之間建立來源連線,Salesforce來源資料欄位必須先對應到適當的目標XDM欄位,才能擷取到Platform。
請參閱下列內容,以取得有關Salesforce資料集與Platform之間的欄位對應規則的詳細資訊:
設定Salesforce名稱空間和結構描述自動產生公用程式
若要使用Salesforce來源做為B2B-CDP的一部分,您必須先設定Postman公用程式來自動產生Salesforce名稱空間和結構描述。 下列檔案提供有關設定Postman公用程式的額外資訊:
- 您可以從此GitHub存放庫下載名稱空間和結構描述自動產生公用程式集合和環境。
- 如需有關使用Platform API的詳細資訊,包括如何收集必要標題的值以及讀取範例API呼叫,請參閱Platform API快速入門的指南。
- 如需如何產生Platform API認證的詳細資訊,請參閱有關驗證和存取Experience PlatformAPI的教學課程。
- 如需如何設定Platform API Postman的相關資訊,請參閱設定開發人員主控台和 Postman上的教學課程。
透過平台開發人員主控台和Postman設定,您現在可以開始將適當的環境值套用至您的Postman環境。
下表包含範例值,以及有關填入Postman環境的其他資訊:
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 6-row-3 7-row-3 8-row-3 9-row-3 10-row-3 11-row-3 12-row-3 13-row-3 14-row-3 15-row-3 16-row-3 17-row-3 layout-auto | ||
---|---|---|
變數 | 說明 | 範例 |
CLIENT_SECRET |
用來產生{ACCESS_TOKEN} 的唯一識別碼。 如需如何擷取{CLIENT_SECRET} 的詳細資訊,請參閱驗證及存取Experience PlatformAPI的教學課程。 |
{CLIENT_SECRET} |
JWT_TOKEN |
JSON Web權杖(JWT)是用於產生{ACCESS_TOKEN}的驗證認證。 如需如何產生{JWT_TOKEN} 的相關資訊,請參閱驗證及存取Experience PlatformAPI的教學課程。 |
{JWT_TOKEN} |
API_KEY |
用於驗證對Experience Platform API的呼叫的唯一識別碼。 如需如何擷取{API_KEY} 的詳細資訊,請參閱驗證及存取Experience PlatformAPI的教學課程。 |
c8d9a2f5c1e03789bd22e8efdd1bdc1b |
ACCESS_TOKEN |
完成對Experience Platform API的呼叫所需的授權權杖。 如需如何擷取{ACCESS_TOKEN} 的詳細資訊,請參閱驗證及存取Experience PlatformAPI的教學課程。 |
Bearer {ACCESS_TOKEN} |
META_SCOPE |
關於Marketo,此值是固定的,並且一律設定為: ent_dataservices_sdk 。 |
ent_dataservices_sdk |
CONTAINER_ID |
global 容器儲存所有標準Adobe和Experience Platform合作夥伴提供的類別、結構描述欄位群組、資料型別和結構描述。 關於Marketo,此值是固定的,且一律設為global 。 |
global |
PRIVATE_KEY |
用來驗證您的Postman執行個體以Experience PlatformAPI的認證。 請參閱有關設定開發人員主控台和設定開發人員主控台和 Postman的教學課程,以瞭解如何擷取{PRIVATE_KEY}的說明。 | {PRIVATE_KEY} |
TECHNICAL_ACCOUNT_ID |
用來整合至Adobe I/O的認證。 | D42AEVJZTTJC6LZADUBVPA15@techacct.adobe.com |
IMS |
Identity Management系統(IMS)提供驗證Adobe服務的架構。 關於Marketo,此值是固定的,且一律設為: ims-na1.adobelogin.com 。 |
ims-na1.adobelogin.com |
IMS_ORG |
企業實體,可以擁有或授權產品及服務並允許存取其成員。 如需如何擷取{ORG_ID} 資訊的說明,請參閱設定開發人員主控台和 Postman的教學課程。 |
ABCEH0D9KX6A7WA7ATQE0TE@adobeOrg |
SANDBOX_NAME |
您正在使用的虛擬沙箱分割的名稱。 | prod |
TENANT_ID |
ID,用來確保您建立的資源已正確命名且包含在您的組織內。 | b2bcdpproductiontest |
PLATFORM_URL |
您對其進行API呼叫的URL端點。 此值是固定的,且一律設為: http://platform.adobe.io/ 。 |
http://platform.adobe.io/ |
munchkinId |
您的Marketo帳戶的唯一識別碼。 如需如何擷取munchkinId 的詳細資訊,請參閱驗證您的 Marketo 執行個體的教學課程。 |
123-ABC-456 |
sfdc_org_id |
您的Salesforce帳戶的組織識別碼。 請參閱下列Salesforce 指南,以取得您Salesforce組織ID的詳細資訊。 | 00D4W000000FgYJUA0 |
has_abm |
表示您是否訂閱Marketo Account-Based Marketing的布林值。 | false |
has_msi |
表示您是否訂閱Marketo Sales Insight的布林值。 | false |
執行指令碼
設定好Postman集合和環境後,您現在可以透過Postman介面執行指令碼。
在Postman介面中,選取自動產生器公用程式的根資料夾,然後從頂端標題選取 Run。
Runner介面出現。 從這裡,確定已選取所有核取方塊,然後選取 Run Namespaces and Schemas Autogeneration Utility。
成功的請求會根據測試版規格建立B2B名稱空間和結構描述。
設定您在Amazon Web Services上Experience Platform的Salesforce來源 aws
請依照下列步驟瞭解如何設定您的Salesforce帳戶以在Amazon Web Services (AWS)上Experience Platform。
先決條件
若要將您的Salesforce帳戶連線至AWS地區的Experience Platform,您必須具備下列條件:
- 具有API存取許可權的Salesforce帳戶。
- Salesforce Connected App可供您用來啟用JWT_BEARER OAuth流程。
- Salesforce中存取資料的必要許可權。
您也必須新增下列IP位址至您的允許清單,才能將您的Salesforce帳戶連線至Amazon Web Services (AWS)上的Experience Platform:
34.193.63.59
44.217.93.240
44.194.79.229
建立Salesforce Connected App
首先,使用以下專案來建立PEM檔案的憑證/金鑰組。
openssl req -newkey rsa:4096 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem
- 在Salesforce儀表板中,選取設定(
- 導覽至App Manager,然後選取 New Connection App。
- 為您的應用程式命名,並允許自動填寫其餘欄位。
- 為Enable OAuth Settings啟用此方塊。
- 設定回呼URL。 由於這不會用於JWT,因此您可以使用
https://localhost
。 - 為Use Digital Signatures啟用此方塊。
- 上傳先前建立的cert.pem檔案。
新增必要許可權
新增下列許可權:
- 透過API (API)管理使用者資料
- 存取自訂許可權(custom_permissions)
- 存取身分URL服務(識別碼、設定檔、電子郵件、地址、電話)
- 存取唯一識別碼(openid)
- 隨時執行請求(refresh_token、offline_access)
在新增您的許可權後,請確定您已啟用 Issue JSON Web Token (JWT)-based access tokens for named user 的方塊。
接著,選取 Save、Continue,然後選取 Manage Customer Details。 使用消費者詳細資訊面板來擷取下列內容:
- 消費者金鑰:您稍後會在驗證Experience Platform的Salesforce帳戶時,使用此消費者金鑰作為使用者端ID。
- 使用者密碼:您稍後會在驗證Experience Platform的Salesforce帳戶時,使用此使用者密碼作為使用者端ID。
授權您的Salesforce使用者使用連線應用程式
請依照下列步驟,取得使用連線應用程式的授權:
- 瀏覽至 Manage Connected Apps。
- 選擇「Edit」。
- 將 Permitted Users 設定為 Admin approved users are pre-authorized,然後選取 Save。
- 導覽至 Settings> Manage Users >Profiles。
- 編輯與使用者相關聯的設定檔。
- 導覽至 Connected App Access,然後選取您在先前步驟中建立的應用程式。
產生JWT持有人權杖
請依照下列步驟產生您的JWT持有人權杖。
將索引鍵配對轉換為pkcs12
若要產生JWT持有人權杖,您必須先使用以下命令將您的憑證/金鑰組轉換為pkcs12格式。 在此步驟中,您還必須在系統提示時 設定匯出密碼。
openssl pkcs12 -export -in cert.pem -inkey key.pem -name jwtcert >jwtcert.p12
根據pkcs12建立Java金鑰存放區
接下來,使用以下命令,根據您剛產生的pkcs12建立Java金鑰儲存區。 在此步驟中,當出現提示時,您也必須設定 目的地金鑰存放區密碼。 此外,您必須提供先前的匯出密碼作為來源金鑰存放區密碼。
keytool -importkeystore -srckeystore jwtcert.p12 -destkeystore keystore.jks -srcstoretype pkcs12 -alias jwtcert
確認您的keystroke.jks包含jwtcert別名
接下來,使用下列命令確認您的keystroke.jks
包含jwtcert
別名。 在此步驟中,系統會提示您提供上一步驟中產生的目的地金鑰存放區密碼。
keytool -keystore keystore.jks -list
產生已簽署的權杖
最後,使用下列java類別JWTExample產生您的簽署權杖。
package org.example;
import org.apache.commons.codec.binary.Base64;
import java.io.*;
import java.security.*;
import java.text.MessageFormat;
public class Main {
public static void main(String[] args) {
String header = "{\"alg\":\"RS256\"}";
String claimTemplate = "'{'\"iss\": \"{0}\", \"sub\": \"{1}\", \"aud\": \"{2}\", \"exp\": \"{3}\"'}'";
try {
StringBuffer token = new StringBuffer();
//Encode the JWT Header and add it to our string to sign
token.append(Base64.encodeBase64URLSafeString(header.getBytes("UTF-8")));
//Separate with a period
token.append(".");
//Create the JWT Claims Object
String[] claimArray = new String[5];
claimArray[0] = "{CLIENT_ID}";
claimArray[1] = "{AUTHORIZED_SALESFORCE_USERNAME}";
claimArray[2] = "{SALESFORCE_LOGIN_URL}";
claimArray[3] = Long.toString((System.currentTimeMillis() / 1000) + 2629746*4);
MessageFormat claims;
claims = new MessageFormat(claimTemplate);
String payload = claims.format(claimArray);
//Add the encoded claims object
token.append(Base64.encodeBase64URLSafeString(payload.getBytes("UTF-8")));
//Load the private key from a keystore
KeyStore keystore = KeyStore.getInstance("JKS");
keystore.load(new FileInputStream("path/to/keystore"), "keystorepassword".toCharArray());
PrivateKey privateKey = (PrivateKey) keystore.getKey("jwtcert", "privatekeypassword".toCharArray());
//Sign the JWT Header + "." + JWT Claims Object
Signature signature = Signature.getInstance("SHA256withRSA");
signature.initSign(privateKey);
signature.update(token.toString().getBytes("UTF-8"));
String signedPayload = Base64.encodeBase64URLSafeString(signature.sign());
//Separate with a period
token.append(".");
//Add the encoded signature
token.append(signedPayload);
System.out.println(token.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
claimArray[0]
claimArray[0]
。claimArray[1]
claimArray[1]
。claimArray[2]
claimArray[2]
。claimArray[3]
claimArray[3]
。 例如,3660624000000
是12-31-2085。/path/to/keystore
/path/to/keystore
取代為您keystore.jks的正確路徑keystorepassword
keystorepassword
取代為您的目的地金鑰存放區密碼。privatekeypassword
privatekeypassword
。後續步驟
完成Salesforce帳戶的先決條件設定後,您可以繼續連線您的Salesforce帳戶,以Experience Platform並內嵌您的CRM資料。 如需詳細資訊,請閱讀以下檔案:
使用API連線Salesforce至平台
以下檔案提供如何使用API或使用者介面將Salesforce連線到Platform的資訊: