OAuth サーバー間認証を使用したAEM Forms Communications API の呼び出し
このガイドでは、OAuth サーバー間認証を使用してAdobe Developer Consoleを通じてアクセスされるAEM Forms Communications Synchronous API を設定および呼び出す手順について説明します。
前提条件
AEM Forms Communications API の実行とテストを行うための環境を設定するには、以下が揃っていることを確認してください。
AEM as a Cloud Service環境の更新
- AEM リリース 2024.10.18459.20241031T210302Z 以降
- 2024 年 11 月より前に環境が作成された場合、製品プロファイルを更新する
アクセスと権限
通信 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通信の同期 API の設定
AEM Forms Communication API には、OAuth サーバー間認証を使用して、Adobe Developer Console経由でアクセスします。
次の手順では、テンプレートと XDP ファイルを使用してFormsを生成するようにPDF通信同期 API を設定する方法について説明します。
手順 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 環境へのアクセスと表示
AEM Cloud Service 環境の詳細の表示またはアクセスには、次の 2 つのオプションのいずれかを使用できます。
-
プログラムの概要 ページで、次の操作を行います
-
左側のメニューで 「環境」 クリックします。 すべての環境のリストが表示されます
-
特定の環境名をクリックすると詳細を表示できます
-
プログラムの概要 ページで、次の操作を行います
-
「環境 セクションを見つけます
-
「すべて表示」 をクリックして、すべての環境を表示します
-
環境の横にある 省略記号メニュー(…) をクリックします
-
「詳細 表示」を選択し す。
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 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 |
|---|
| 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:クライアント ID のAEM環境への登録
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 設定として識別します) -
version:API バージョン(通常は
"1"または"1.0") -
envTypes:この設定が適用される環境タイプの配列
["dev"]– 開発環境のみ["stage"]- ステージング環境のみ["prod"]– 実稼動環境のみ
-
allowedClientIDs:AEM インスタンスへのアクセスが許可されたクライアント ID
- オーサー:オーサー層のクライアント ID
- パブリッシュ:パブリッシュ層のクライアント 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に config デプロイメントであることを示しています。
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 をテストするためのインタラクティブなインターフェイスが用意されています。試す 機能を使用して、Forms通信 API の PDFを生成 を呼び出してテストします。
-
Forms Communication API Reference に移動し ブラウザーで Forms Communication API ドキュメントを開きます。
-
「ドキュメントの生成」セクションを展開し、「XDP またはPDF テンプレートから入力可能なPDF フォームを生成します(オプションでデータ結合も可能 」を選択します。
-
右側のウィンドウで、「試す をクリックし す。
-
以下の値を入力します。
table 0-row-3 1-row-3 2-row-3 3-row-3 4-row-3 5-row-3 セクション パラメーター 値 バケット AEM インスタンス AEM インスタンス名(Adobe ドメイン名( .adobeaemcloud.com)を除いたもの。例えば、pXXXXX-eYYYYYをバケットとして使用します。セキュリティ ベアラートークン Adobe Developer Console プロジェクトの OAuth サーバー間資格情報からのアクセストークン を使用します。 本文 テンプレート XDP をアップロードしてPDF フォームを生成します。 例えば、 この XDP を使用してPDFを生成できます。 本文 data 事前入力されたPDF フォームを生成するためにテンプレートと結合されるデータを含む、オプションの XML ファイル。 例えば、 この 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 を呼び出すこともできます。 - 応答コードが
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 NOTE CLIENT_ID、CLIENT_SECRETおよびSCOPESをAdobe Developer Console プロジェクトからコピーできます。
手順 5:src/index.jsを作成する
- プロジェク
index.jsのルートレベルにファイルを作成します - 次のコードを追加し、プレースホルダーを実際の値に置き換えます。
| code language-javascript |
|---|
|
手順 6:アプリケーションを実行する
| code language-bash |
|---|
|
demo-nodejs-generate-pdf フォルダーにPDFが作成されます。 フォルダーに移動して、generatedForm.pdf という名前の生成されたファイルを見つけます。
生成されたPDF を開いて確認できます。
トラブルシューティング
一般的な問題と考えられる原因
問題 1:403 Forbidden エラー
症状:
- API リクエストの戻り
403 Forbidden - エラーメッセージ:未認証のアクセス
考えられる原因:
- クライアント ID がAEM インスタンスの
api.yaml設定に登録されていません
問題 2:401 Unauthorized エラー
症状:
- API リクエストの戻り
401 Unauthorized - エラーメッセージ:トークンが無効または期限切れです
考えられる原因:
- アクセストークンが期限切れです(24 時間のみ有効)
- クライアント ID とクライアント秘密鍵が正しくないか、一致しません
問題 3:404 エラーが見つからない
症状:
- API リクエストの戻り
404 Not Found - エラーメッセージ:リソースが見つかりません または API エンドポイントが見つかりません
考えられる原因:
- バケットパラメーターが正しくありません(AEM インスタンスの識別子と一致しません)
問題 4:パイプラインのデプロイメントに失敗する
症状:
- 設定パイプラインの実行に失敗
- デプロイメントログに、
api.yamlに関連するエラーが表示される
考えられる原因:
- YAML 構文(インデント、引用符、または配列形式の問題)が無効です
api.yamlが間違ったディレクトリに配置されています- 設定のクライアント ID の形式が正しくないか、正しくありません
- クライアントシークレットが無効です
問題 5:Forms Communication API を実行できない
症状:
- API リクエストが、サポートされていない機能または使用できない機能を示すエラーを返します。
- XDP と XML を使用したPDFの生成が機能しない。
- パイプラインのデプロイメントは正常に完了しますが、ランタイム API 呼び出しは失敗します。
考えられる原因:
AEM環境は、Forms通信 API が導入またはサポートされる前にリリースされたバージョンを実行しています。
AEM環境を更新するには、AEM インスタンスの更新 の節を参照してください。
AEM インスタンスの更新
「環境の詳細」を検索するようにAEM インスタンスを更新するには:
-
環境名の横にある「
ellipsis(…)」アイコンを選択し、「更新」をクリックします -
送信 ボタンをクリックし、提案されたフルスタックパイプラインを実行します。