使用OAuth伺服器對伺服器驗證叫用AEM Forms Communications API
本指南提供設定及叫用AEM Forms Communications Synchronous API的說明,這些API是透過Adobe Developer Console使用OAuth伺服器對伺服器驗證來存取。
先決條件
若要設定執行和測試AEM Forms Communications API的環境,請確定您具備下列條件:
更新AEM as a Cloud Service環境
- AEM 2024.10.18459.20241031T210302Z或更新版本
- 如果2024年11月之前建立的環境,請更新產品設定檔
存取權和許可權
在開始設定Communications API之前,請確定您具有必要的存取許可權和許可權。
使用者和角色許可權
- 在Adobe Admin Console中指派的開發人員角色
- 在Adobe Developer Console中建立專案的許可權
Git存放庫存取權
- 存取Cloud Manager Git存放庫
- 用於複製和推送變更的Git憑證
使用Adobe Developer Console (ADC)產生存取權杖
- 使用OAuth伺服器對伺服器驗證,透過Adobe Developer Console產生存取權杖。
- 從Adobe Developer Console擷取使用者端ID
開發工具
- Node.js以執行範例應用程式
- 最新版本的Git
- 存取終端機/命令列
- 用於編輯組態檔(VS程式碼、IntelliJ等)的文字編輯器或IDE
- 用於API測試的 Postman 或類似的工具
設定AEM Forms通訊同步API
透過Adobe Developer Console,使用OAuth伺服器對伺服器驗證存取AEM Forms通訊API。
請依照下列步驟說明如何使用範本和XDP檔案來設定Forms通訊同步API,以產生PDF:
步驟1:存取AEM雲端服務環境和AEM Forms端點
存取您的AEM Cloud Service環境詳細資訊,以取得API設定所需的URL和識別碼。
1.1登入Adobe Cloud Manager
- 瀏覽至my.cloudmanager.adobe.com
- 使用您的Adobe ID登入
1.2瀏覽至計畫總覽
從清單中選取您的計畫。 您被重新導向至 方案總覽 頁面
1.3存取和檢視AEM Cloud Service環境
您可以使用以下兩個選項之一,檢視或存取AEM雲端服務環境詳細資訊:
-
在 計畫總覽 頁面
-
按一下左側功能表中的「環境」。 您可以檢視所有環境的清單
-
按一下特定環境名稱以檢視詳細資訊
-
在 計畫總覽 頁面
-
找到 環境 區段
-
按一下 「全部顯示」 以檢視所有環境
-
按一下環境旁的省略符號選單(…)
-
選取「檢視詳細資料」
1.4.尋找您的AEM Forms端點
從 環境 詳細資訊頁面,記下您的AEM URL執行個體。
步驟2:複製Git存放庫
複製Cloud Manager Git存放庫以管理您的API設定檔案。
2.1找出「存放庫」區段
-
在 計畫總覽 頁面上,按一下 存放庫 索引標籤
-
找到存放庫名稱,然後按一下省略符號選單(…)
-
複製存放庫URL
https://git.cloudmanager.adobe.com/<org>/<program>/2.2使用Git命令複製
-
開啟命令提示或終端機
-
執行
git clone命令以複製Git存放庫。code language-bash git clone [repository-url]
例如,若要複製Git存放庫,請執行以下命令:
https://git.cloudmanager.adobe.com/formsinternal01/AEMFormsInternal-ReleaseSanity-pXXX-ukYYYY/
若要進一步瞭解如何整合Adobe Cloud Manager與Adobe Cloud Manager,請參閱Git整合檔案。
步驟3:Adobe Developer Console專案設定
3.1存取Adobe Developer Console
- 導覽至Adobe Developer Console
- 使用您的Adobe ID登入
- 建立新專案或導覽至您現有的專案
-
在 快速入門 區段中,按一下建立新專案
-
使用預設名稱建立新專案
-
按一下右上角的編輯專案
-
提供有意義的名稱(例如「formsproject」)
-
按一下「儲存」
-
從Adobe Developer Console按一下所有專案
-
找到您的專案,然後按一下以開啟。
3.2新增Forms通訊API
-
按一下新增API
-
在 新增API 對話方塊中,依 Experience Cloud 篩選
-
選取「Forms通訊API」
-
按一下「下一步」。
-
選取 OAuth伺服器對伺服器 驗證方法
-
按一下「下一步」。
3.3新增產品設定檔
-
選取符合您AEM執行個體URL ()的產品設定檔
https://Service Type -Environment Type-Program XXX-Environment XXX.adobeaemcloud.com。 -
按一下「儲存已設定的 API」。API和產品描述檔已新增到您的專案
-
檢視 認證詳細資料 區段
記錄API認證
API Credentials:
================
Client ID: <your_client_id>
Client Secret: <your_client_secret>
Technical Account ID: <tech_account_id>
Organization ID: <org_id>
Scopes: AdobeID,openid,read_organizations
3.4產生存取權
在Adobe Developer Console中手動產生存取權杖:
-
按一下專案API區段中的 「產生存取權杖」 按鈕
-
複製產生的存取權杖
| note note |
|---|
| NOTE |
| 存取權杖僅對 24小時 有效 |
使用Adobe IMS API以程式設計方式產生權杖:
必要的認證:
- 用戶端 ID
- 用戶端密碼
- 範圍(通常:
openid, AdobeID, read_organizations, additional_info.projectedProductContext, read_pc.dma_aem_cloud, aem.document)
權杖端點:
| code language-none |
|---|
|
範例要求(curl):
| code language-bash |
|---|
|
回應:
| code language-json |
|---|
|
您現在可以使用產生的存取Token針對開發、預備或生產環境進行API呼叫。
步驟4:向AEM環境註冊使用者端ID
若要讓ADC專案的使用者端ID能夠與AEM執行個體通訊,您必須使用YAML設定檔案進行註冊,並透過設定管道進行部署。
4.1尋找或建立設定目錄
-
導覽至複製的AEM專案存放庫,並找到
config資料夾 -
如果該檔案不存在,請在專案根層級建立:
code language-bash mkdir config -
在
api.yaml目錄中建立名為config的新檔案:code language-bash touch config/api.yaml -
在
api.yaml檔案中新增下列程式碼:code language-yaml kind: "API" version: "1" metadata: envTypes: ["dev"] # or ["prod", "stage"] for production environments data: allowedClientIDs: author: - "<your_client_id>" publish: - "<your_client_id>" preview: - "<your_client_id>"
以下說明組態引數:
-
kind:一律設為
"API"(將此識別為API設定) -
版本: API版本,通常是
"1"或"1.0" -
envTypes:套用此設定的環境型別陣列
["dev"]— 僅開發環境["stage"]— 僅暫存環境["prod"]— 僅生產環境
-
allowedClientIDs:允許使用者端ID存取您的AEM執行個體
- 作者:作者層的使用者端ID
- 發佈:發佈層級的使用者端ID
- 預覽:預覽層的使用者端ID
4.2提交和推送變更
-
導覽至您克隆的存放庫的根資料夾,然後執行下列命令:
code language-bash git add config/api.yaml git commit -m "Whitelist client id for api invocation" git push origin <your-branch>
步驟5:設定設定管道
5.1登入Adobe Cloud Manager
- 瀏覽至my.cloudmanager.adobe.com
- 使用您的Adobe ID登入
5.1找到管道卡
-
在計畫總覽頁面上找到 管道 卡
-
按一下 「新增」 按鈕
5.2選取管線型別
-
適用於開發環境:選取「新增非生產管道」。 非生產管道適用於開發和測試環境
-
針對生產環境:選取「新增生產管道」。 生產管道需要其他核准
1. 設定管道 — 設定索引標籤
在 組態 索引標籤中:
a. 管線型別
- 選取「部署管道」
b. 管道名稱
- 提供描述性名稱,例如,將管道命名為
api-config-pipieline
c. 部署觸發程式
- 手動:僅在手動觸發時部署(建議用於初始設定)
- 在Git變更上:將變更推送至分支時自動部署
d. 重要量度失敗行為
- 每次都詢問:失敗時提示動作(預設)
- 立即失敗:在量度失敗時自動讓管道失敗
- 立即繼續:失敗仍繼續
e.按一下 「繼續」 以繼續前往 Source程式碼 標籤
2. 設定Pipeline - Source程式碼標籤
在 Source程式碼 索引標籤中:
a. 部署型別
- 選取「目標部署」
b. 部署選項
- 選取「設定」 (僅部署設定檔)。 它會告訴Cloud Manager這是設定部署。
c. 選取合格的部署環境
- 選擇您要部署設定的環境。 在此案例中,它是
dev環境。
d. 定義Source程式碼詳細資料
- 存放庫:選取包含您
api.yaml檔案的存放庫。 例如,選取AEMFormsInternal-ReleaseSanity-pXXXXX-ukYYYYY存放庫。 - Git分支:選取您的分支。 例如,在此案例中,我們的程式碼部署在
main分支。 - 程式碼位置:輸入
config目錄的路徑。 由於api.yaml位於根目錄的config資料夾中,所以請輸入/config
e.按一下 「儲存」 以建立管道
步驟6:部署設定
現在管道已建立,請部署您的api.yaml設定
6.1來自管道概觀
- 在方案總覽頁面上,找到 管道 卡片
- 瀏覽至清單中新建立的設定管道。 例如,尋找您建立的管道名稱(例如「api-config-pipeline」)。 您可以檢視管道詳細資訊,包括狀態和上次執行。
6.2開始部署**
- 按一下您的管道旁的 「建置」 按鈕(或播放圖示▶)
- 如果出現提示且管道執行開始,則確認部署
6.3驗證部署是否成功
-
等待管道完成。
-
如果成功,狀態會變更為「成功」(綠色核取記號✓)。
-
如果失敗,狀態會變更為「失敗」(紅十字✗)。 按一下 下載記錄檔 以檢視錯誤詳細資料。
-
現在,您可以開始測試Forms Communications API。 為了測試目的,您可以使用Postman、curl或任何其他REST使用者端來叫用API。
步驟7:API規格和測試
現在您的環境已設定完畢,您可以開始使用Swagger UI或以程式設計方式開發NodeJS應用程式來測試AEM Forms Communication API。
Swagger UI提供互動式介面來測試API,而不需撰寫程式碼。請使用 嘗試使用 功能,叫用並測試產生PDF Forms通訊API。
-
導覽至Forms Communication API Reference,然後在瀏覽器中開啟Forms Communication API檔案。
-
展開 Document Generation 區段並選取從XDP或PDF範本產生可填寫的PDF表單,可選擇合併資料。
-
在右窗格中,按一下試用。
-
輸入下列值:
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 節 引數 值 貯體 AEM執行個體 不含AEM網域名稱( .adobeaemcloud.com)的Adobe執行個體名稱例如,使用pXXXXX-eYYYYY做為貯體。安全性 持有人權杖 使用Adobe Developer Console專案之OAuth伺服器對伺服器認證的存取權杖 內文 範本 上傳XDP以產生PDF表單。 例如,您可以使用此XDP來產生PDF。 內文 資料 選用的XML檔案,其中包含要與範本合併的資料,以產生預先填入的PDF表單。 例如,您可以使用此XML來產生PDF。 參數 X-Adobe-Accept-Experimental 1 -
按一下 傳送 以叫用API
-
檢查 回應 標籤中的回應:
- 如果回應代碼為
200,表示已成功建立PDF。 - 如果回應代碼為
400,表示要求引數無效或格式錯誤。 - 如果回應代碼為
500,表示存在內部伺服器錯誤。 - 如果回應代碼為
403,表示存在授權錯誤。
在此案例中,回應代碼為
200,這表示已成功產生PDF:
現在,您可以使用下載按鈕下載已建立的PDF,並在PDF檢視器中檢視它:
note note NOTE 為了測試目的,您也可以使用Postman、curl或任何其他REST使用者端來叫用AEM API。 - 如果回應代碼為
開發Node.js應用程式,以使用 Document Services API 從 XDP 範本和 XML 資料檔產生可填寫的PDF表單
先決條件
- 系統上已安裝的Node.js
- 作用中的AEM as a Cloud Service執行個體
- 來自Adobe Developer Console的API驗證持有人權杖
- 範例XDP檔案: ClosingForm.xdp
- 範例XML檔案: ClosingForm.xml
若要開發Node.js應用程式,請遵循逐步開發步驟:
步驟1:建立新的Node.js專案
開啟cmd/終端機並執行以下命令:
| code language-bash |
|---|
|
步驟2:安裝必要的相依性
安裝node-fetch、dotenv和 form-data 程式庫,以分別發出HTTP要求、讀取環境變數及處理表單資料。
| code language-bash |
|---|
|
步驟3:更新package.json
-
開啟cmd/終端機並執行命令:
code language-bash code .
它會在程式碼編輯器中開啟專案。
-
更新
package.json檔案以將type新增至module。code language-bash { "name": "demo-nodejs-generate-pdf", "version": "1.0.0", "type": "module", "main": "index.js", }
步驟4:建立.env檔案
-
在專案的根層級建立.env檔案
-
新增下列設定,並將預留位置取代為ADC專案的OAuth伺服器對伺服器認證中的實際值。
code language-bash CLIENT_ID=<ADC Project OAuth Server-to-Server credential ClientID> CLIENT_SECRET=<ADC Project OAuth Server-to-Server credential Client Secret> SCOPES=<ADC Project OAuth Server-to-Server credential Scopes>
note note NOTE 您可以從Adobe Developer Console專案複製 CLIENT_ID、CLIENT_SECRET和SCOPES。
步驟5:建立src/index.js
- 在專案的根層級建立
index.js檔案 - 新增下列程式碼,並以實際值取代預留位置:
| code language-javascript |
|---|
|
步驟6:執行應用程式
| code language-bash |
|---|
|
PDF是在demo-nodejs-generate-pdf資料夾中建立。 瀏覽至資料夾以尋找名為generatedForm.pdf的產生檔案。
您可以開啟產生的PDF進行檢視。
疑難排解
常見問題與可能原因
問題1: 403禁止的錯誤
症狀:
- API要求傳回
403 Forbidden - 錯誤訊息: 未經授權的存取
可能的原因:
- 使用者端ID未在AEM執行個體的
api.yaml設定中註冊
問題2: 401未授權錯誤
症狀:
- API要求傳回
401 Unauthorized - 錯誤訊息: 無效或過期的Token
可能的原因:
- 存取權杖已過期(僅適用於24小時)
- 使用者端ID和使用者端密碼不正確或不相符
問題3: 404 Not Found錯誤
症狀:
- API要求傳回
404 Not Found - 錯誤訊息:找不到 資源 或找不到API端點
可能的原因:
- 不正確的貯體引數(不符合AEM執行個體識別碼)
問題4:管道部署失敗
症狀:
- 設定管道執行失敗
- 部署記錄檔顯示與
api.yaml相關的錯誤
可能的原因:
- 無效的YAML語法(縮排、引號或陣列格式問題)
api.yaml放置在不正確的目錄中- 設定中的使用者端ID格式不正確或不正確
- 無效的使用者端密碼
問題5: Forms Communication API無法執行
症狀:
- API請求傳回錯誤,指出不支援或無法使用的功能。
- 使用XDP和XML產生PDF無法運作。
- 管道部署成功完成,但執行階段API呼叫失敗。
可能的原因:
AEM環境執行的是引進或支援Forms Communication API之前發行的版本。
若要更新AEM環境,請參閱更新AEM執行個體區段。
更新AEM執行個體
若要更新AEM執行個體以找出環境詳細資訊:
-
選取環境名稱旁的
ellipsis(…)圖示,然後按一下更新 -
按一下 提交 按鈕,然後執行建議的完整棧疊管道。