Authoring と Management GraphQL APIを使用する

samatsu 5/12/2023 530 N/A Sitecore XMCloud

Sitecore XM Cloudでは、コンテンツ管理サーバーで管理されているアイテムを操作するためのAuthoring and Management GraphQL APIを提供しています。これらを使用することで、GraphQL APIを使用してアイテムを取得,変更したり、パブリッシュするようなジョブを実行することができるようになります。

今回は、標準で用意されているGraphQL IDEを使用してこの機能を実際に使用できるようにする手順を記載します。ここで記載したUIの操作は将来変更される場合があるのであらかじめご承知ください。

公式の手順に関しては、ドキュメントのサイトをご参照ください。

https://doc.sitecore.com/xmc/en/developers/xm-cloud/sitecore-authoring-and-management-graphql-api.html

1. GraphQL IDEの有効化

GraphQLのIDEのURLは XM Cloud Deployポータルで、GraphQLのIDEを有効化したい環境(Environment)に Sitecore_GraphQL_ExposePlayground という名前の環境変数を定義し、値を true に設定します。すでに環境変数が定義されている場合は、既存の定義を編集して false から true に変更します。

今回は、devという名前の環境の Options を選択して、 Environment variables を選択します。

環境変数は定義済みなので既存の環境編集を修正して true にします。

環境変数を変更をXM Cloudの環境(Environment)に反映するには、XM Cloudのインスタンスを再デプロイする必要があります。

2.Automation Clientの生成

GraphQL APIを使用するために、アクセストークンを生成する必要があります。アクセストークンは、XM Cloudのプロジェクトを使用して作業している場合は、/.sitecore/user.json の xmCloudのaccessTokenを使用することができますが、今回は外部連携を意識して、インタラクティブなログインなしでAPIを呼び出せるようにするためにAutomation Clientを作成してアクセストークンを取得するようにしてみます。

XM Cloud Deploy ポータルのメニューの Authentication clients を選択し、表示された画面で、 Environment タブが選択されている状態で、 Generate ボタンをクリックし、メニューから Automation Clientを選択します。

表示されたポップアップダイアログで、ProjectとEnvironmentに適切なプロジェクトと環境を選択し、Labelに名前を入力して、Generateボタンをクリックします。

生成に成功すると、Client IDと Client Secretが表示されるので、Client ID と Client Secret をメモ帳なので記録しておきます。Client Secretを確認できるのはこのタイミングのみなので注意してください。シークレットを忘れた場合は、再作成する必要があります。

3. トークンの取得

必要な情報を集めたらトークンを生成します。公式のウォークスルーで取得手順が載っていますが、ここではPowerShellを使用します。以下のコードサンプルを参考に、アクセストークンを取得します。

$uri = "https://auth.sitecorecloud.io/oauth/token"
$clientId = "<Automation ClientのClient ID>"
$clientSecret = "<Automation ClientのClient Secret"
$audience = "https://api.sitecorecloud.io"
$postData = @{ client_id= $clientId; client_secret=$clientSecret; audience=$audience ;grant_type='client_credentials' }
$result = Invoke-WebRequest -Method Post -Uri $uri -Headers @{ "Content-Type"="application/x-www-form-urlencoded"} -Body $postData
$token = ConvertFrom-Json $result.Content
$token.access_token

最後に出力された文字列がアクセストークンになります。トークンの有効期限は900秒なので、期限が切れたら再取得する必要があるので注意してください。

スクリプト内で指定しているサーバー名などは将来変更される可能性があるので、うまくいかない場合は公式のドキュメントを参照して下さい。

4. GraphQL IDEにアクセス

アクセストークンを取得したので、あとは、ブラウザーを起動し、 https://<XM CLoudのCMサーバー>/sitecore/api/authoring/graphql/playground/  にアクセスします。

IDEが表示されたら、左下のHTTP HEADERSのパネルを展開し、Authorization ヘッダーの設定を行います。また、IDE内のGraphQLエンドポイントのパスが、https://<CMサーバー>/sitecore/api/authoring/graphql/v1/ になっていない場合は、エンドポイントのURLを変更します。

Authorizationヘッダーの設定とエンドポイントのURLが適切に行えれば、右側のDOCSを展開してAPI情報を参照することができるようになります。

以上で準備完了です。あとはドキュメントのサイトのクエリ例などを参考にGraphQL APIを使用できることを確認できます。