Tailwind Logo

Sitecore Authoring and Management GraphQL API の紹介

XM Cloud

公開日: 2024-07-08

XM Cloud には GraphQL を利用してコンテンツの編集が可能な GraphQL の Endpoint を用意しています。この機能は標準ではオフになっているため、今回はこれをオンにして使えるようにするところまで紹介をします。

この手順は以下のページで紹介されています。

Authoring GraphQL IDE とは?

これまでブログでも CMS からデータを取得する GraphQL は、クエリーを投げると Json のデータが返ってくる形でした。GraphQL のエンドポイントを利用して、コンテンツのアップデートなどは可能でしょうか?実はこれを実現するのが Authoring and Management GraphQL の仕組みになります。これは XM Cloud Deploy の管理画面で、Details の下のほうに移動をすると、Authoring GraphQL IDE のリンクがあり、ここからアクセスが可能です。

autheringgraph01.png

GraphQL IDE を有効にする

この機能はデフォルトでは無効になっており、有効にするためには XM Cloud Deploy の管理画面から設定を変更する必要があります。設定は簡単で、環境の Variables にある設定のうち、 Sitecore_GraphQL_ExposePlayground の設定を true (デフォルトでは false )に変更をして、Build and Deploy を実行してください。

autheringgraph02.png

アクセストークンの設定

設定が完了したあと、管理画面から Launch IDE をクリックすると GraphQL の Playground の画面が表示されます。しかしながら、Schema のタブをクリックしても何も表示されません。

autheringgraph03.png

これはアクセスをするにあたって、アクセストークンが不足しているため権限が不足している状態です。

まずアクセスをするにあたっては、HTTP HEADERS に認証のための情報を記載する必要があります。フォーマットは以下の通りですが、accessToken を取得する必要があります。これは、XM Cloud のプロジェクトのうち .sitecore\user.json のファイルに記載されている endpoints - xmCloud - accessToken を利用することができます。

JSON
{
    "Authorization": "Bearer accessToken"
}

以下がアクセスできている状況です。

autheringgraph04.png

この段階で開発者の人はテストクエリーなどを実行して、GraphQL を利用してコンテンツの編集が可能な状況となります。

アクセストークンを取得する

他システムと連携をするような場合、複数のトークン/オートメーション・クライアントを使用する必要がある、または使用したい場合のために、追加のトークンを生成することが可能です。

まず最初に、XM Cloud Deploy の管理画面から Credentials を選択、Environment タブを開いてください。

autheringgraph05.png

ここでは新規に Automation Client を作成します。今回は以下のように作成をします。

autheringgraph06.png

生成すると以下のようにキーが表示されます。

autheringgraph07.png

Client secret に関してはこの画面のみで表示されて、後々確認をすることはできません。わからなくなった場合は作り直す形となります。結果以下のような画面になります。

autheringgraph08.png

あとは Obtain an additional access token (optional) に従って、PowerShell の環境からデータを取得していきます。デフォルトの値として、 authority URL は https://auth.sitecorecloud.io、 audience URL は https://api.sitecorecloud.io となるため、以下のスクリプトで your-client-id と your-client-secret と your-xmcloud-host を指定してください。

PowerShell
dotnet sitecore cloud login --client-credentials --client-id <your-client-id> --client-secret <your-client-secret> --allow-write true --xmcloudhost https://<your-xmcloud-host> --authority https://auth.sitecorecloud.io --audience https://api.sitecorecloud.io 
PowerShell
curl --location --request POST 'https://auth.sitecorecloud.io/oauth/token' --header 'Content-Type: application/x-www-form-urlencoded' --data-urlencode 'client_id=<your-client-id>' --data-urlencode 'client_secret=<your-client-secret>' --data-urlencode 'audience=https://api.sitecorecloud.io' --data-urlencode 'grant_type=client_credentials'

アクセストークンは以下のように表示されています。

autheringgraph09.png

取得したキーが有効になっていることが分かります。

autheringgraph10.png

このキーは "expires_in":86311, となっており、23時間58分利用することが可能となっています。外部連携の際には、このように有効期限のあるキーを利用するのが良いです。

まとめ

今回は Sitecore Experience Edge とは異なる Authoring and Management GraphQL に関して確認をしました。Sitecore Connect などで利用することで、外部システムでデータ処理をする、といったことが簡単にできるようになります。実装例はまた後日、別の記事で紹介したいと思います。

関連タグ