[AEM Forms]{class="badge positive" title="AEM Formsに適用)。"}
OAuth サーバー間認証を使用したAEM Forms Communications APIの呼び出し
このガイドでは、OAuth Server-to-Server認証を使用してAdobe Developer Consoleを介してアクセスされるAEM Forms Communications Synchronous APIを設定および呼び出す方法について説明します。
前提条件
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
- ターミナル/コマンドラインへのアクセス
- 設定ファイルを編集するためのテキストエディターまたはIDE (VS Code、IntelliJなど)
- Postmanまたは同様のAPI テスト用ツール
AEM Forms Communications Synchronous APIの設定
AEM Forms Communication APIには、OAuth サーバー間認証を使用してAdobe Developer Consoleからアクセスします。
次の手順に従って、Forms Communication同期APIを設定し、テンプレートとXDP ファイルを使用してPDFを生成します。
手順1:AEM Cloud Service環境と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環境へのアクセスと表示
次の2つのオプションのいずれかを使用して、AEM Cloud Service環境の詳細を表示またはアクセスできます。
-
プログラムの概要 ページ
-
左側のメニューで「“環境”」をクリックします。 Adobe Experience Manager Sitesに登録されている
-
特定の環境名をクリックして詳細を表示します
-
プログラムの概要 ページ
-
環境 セクションを探します
-
すべての環境を表示するには、「すべて表示」をクリックします
-
省略記号メニュー(。…)をクリックします 環境の隣
-
「詳細を表示」を選択
1.4. AEM Forms エンドポイントの検索
Environmentの詳細ページで、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 Integration Documentationを参照してください。
ステップ 3:Adobe Developer Consoleプロジェクトの設定
3.1 Adobe Developer Consoleへのアクセス
- Adobe Developer Consoleに移動します
- Adobe IDでログイン
- 新規プロジェクトを作成するか、既存のプロジェクトに移動します
-
クイックスタート セクションで、新規プロジェクトの作成をクリックします
-
新しいプロジェクトがデフォルト名で作成されます
-
右上隅の「プロジェクトを編集」をクリックします
-
意味のある名前を指定します(例:「formsproject」)。
-
「保存」をクリックします。
-
Adobe Developer Consoleから すべてのプロジェクト をクリックします
-
プロジェクトを見つけて、クリックして開きます。
3.2 Forms Communication APIの追加
-
「APIを追加」をクリックします
-
APIを追加 ダイアログで、Experience Cloudでフィルタリングします
-
「Forms Communication 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 |
| アクセストークンは 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 |
|---|
|
生成されたアクセストークンを使用して、開発環境、ステージ環境または実稼動環境のAPI呼び出しを行えるようになりました。
手順4:AEM環境でのクライアント IDの登録
ADC プロジェクトのクライアント IDがAEM インスタンスと通信できるようにするには、YAML設定ファイルを使用して登録し、Config パイプラインを介してデプロイする必要があります。
4.1設定ディレクトリの検索または作成
-
複製されたAEM プロジェクトリポジトリに移動し、
configフォルダーを見つけます -
存在しない場合は、プロジェクトのルートレベルで作成します。
code language-bash mkdir config -
configディレクトリにapi.yamlという名前の新しいファイルを作成します。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"]– 実稼動環境のみ
-
allowedClientID: AEM インスタンスへのアクセスが許可されたクライアント ID
- author:作成者層のクライアント ID
- publish:パブリッシュ層のクライアント ID
- preview: プレビュー層のクライアント 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. パイプラインの設定 – Source コード タブ
「Source コード」タブ:
a. デプロイメントタイプ
- 「"ターゲットのデプロイメント"を選択
b. デプロイメントオプション
- 「“Config”」を選択します(設定ファイルのみをデプロイ)。 これは設定のデプロイメントであることを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をテストするためのインタラクティブなインターフェイスを提供します。Try it機能を使用して、generate PDF Forms Communication APIを呼び出してテストします。
-
Forms Communication API Referenceに移動し、ブラウザーでForms Communication API ドキュメントを開きます。
-
「Document Generation」セクションを展開し、「入力可能なPDF フォームをXDPまたはPDF テンプレートから生成します(オプションでデータ結合)」を選択します。
-
右側のウィンドウで、試すをクリックします。
のテスト
-
以下の値を入力します。
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 セクション パラメーター 値 バケット AEM インスタンス Adobe ドメイン名( .adobeaemcloud.com)を持たないAEM インスタンス名。例えば、pXXXXX-eYYYYYをバケットとして使用します。セキュリティ ベアラートークン Adobe Developer Console プロジェクトのOAuth サーバー間の資格情報🔗から アクセストークンを使用します 本文 テンプレート XDPをアップロードして、PDF フォームを生成します。 例えば、このXDPを使用してPDFを生成できます。 本文 data 事前入力されたPDF フォームを生成するために、テンプレートと結合するデータを含むオプションのXML ファイル。 例えば、このXMLを使用してPDFを生成できます。 パラメーター X-Adobe-Accept-Experimental 1 -
SendをクリックしてAPIを呼び出します
-
「応答」タブの応答を確認します。
- 応答コードが
200の場合、PDFが正常に作成されたことを意味します。 - 応答コードが
400の場合、リクエスト パラメーターが無効であるか、形式が正しくないことを意味します。 - 応答コードが
500の場合、内部サーバーエラーが発生したことを意味します。 - 応答コードが
403の場合、認証エラーが発生したことを意味します。
この場合、応答コードは
200です。これは、PDFが正常に生成されたことを意味します。
これで、ダウンロード ボタンを使用して作成したPDFをダウンロードし、PDF ビューアで表示できます。
note NOTE テストの目的で、Postman、curl、またはその他のREST クライアントを使用して、AEM APIを呼び出すこともできます。 - 応答コードが
Document Services APIを使用して、XDP テンプレートとXML データファイルから入力可能なPDF フォームを生成するNode.js アプリケーションを開発します
前提条件
- システムにインストールされているNode.js
- アクティブなAEM as a Cloud Service インスタンス
- Adobe Developer ConsoleからのAPI認証用ベアラートークン
- サンプル XDP ファイル:ClosingForm.xdp
- サンプル XML ファイル:ClosingForm.xml
Node.js アプリケーションを開発するには、ステップバイステップの開発に従います。
手順1:新しいNode.js プロジェクトの作成
cmd/terminalを開き、次のコマンドを実行します。
| code language-bash |
|---|
|
手順2:必要な依存関係のインストール
node-fetch、dotenv、form-data ライブラリをインストールして、HTTP リクエストを作成し、環境変数を読み取り、フォームデータを処理します。
| code language-bash |
|---|
|
手順3: package.jsonを更新
-
cmd/terminalを開き、次のコマンドを実行します。
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 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 Forbidden エラー
症状:
- API リクエストは
403 Forbiddenを返します - エラーメッセージ:不正アクセス
考えられる原因:
- クライアント IDがAEM インスタンスの
api.yaml設定に登録されていません
問題2:401不正なエラー
症状:
- API リクエストは
401 Unauthorizedを返します - エラーメッセージ:無効または期限切れのトークン
考えられる原因:
- アクセストークンの有効期限(24時間のみ)
- クライアント IDとクライアントシークレットが正しくないか、一致しません
問題3:404 Not Found エラー
症状:
- API リクエストは
404 Not Foundを返します - エラーメッセージ : リソースが見つかりませんまたはAPI エンドポイントが見つかりません
考えられる原因:
- バケットパラメーターが正しくありません(AEM インスタンス IDと一致しません)
問題4:パイプラインのデプロイメントが失敗する
症状:
- パイプライン実行の設定に失敗する
- 展開ログに
api.yamlに関連するエラーが表示されます
考えられる原因:
- 無効なYAML構文(インデント、引用符または配列形式の問題)
api.yamlが正しくないディレクトリに配置されました- 設定内のクライアント IDが正しくないか、正しくありません
- 無効なクライアントシークレット
問題5:Forms Communication APIが実行できない
症状:
- API リクエストは、サポートされていない機能または使用できない機能を示すエラーを返します。
- XDPとXMLを使用したPDFの生成が機能しない。
- パイプラインのデプロイメントは正常に完了しますが、ランタイム API呼び出しは失敗します。
考えられる原因:
AEM環境では、Forms Communication APIが導入またはサポートされる前にリリースされたバージョンが実行されています。
AEM環境を更新するには、「AEM インスタンスを更新」セクションを参照してください。
AEM インスタンスの更新
AEM インスタンスを更新してEnvironment Detailsを見つけるには、次の手順を実行します。
-
ellipsisを選択(。…) 環境名の横にあるアイコンをクリックし、更新をクリックします -
「送信」ボタンをクリックし、提案されたフルスタックパイプラインを実行します。