注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
権限の種類セクションで説明されているように、オントロジー SDK を使用すると、エンドユーザーの権限ではなくサービスユーザーの権限に基づいてデータをクエリできます。次のウォークスルーでは、Next.js© ↗(外部)を使用し、オントロジー SDK とサービスユーザーでデータを取得する方法を説明します。
機密クライアントを使用するサービスまたはアプリケーションを開発する場合、Developer Console アプリケーションとともにサービスユーザーが作成されます。デフォルトの組織とは別の組織に属するオントロジーを使用してアプリケーションを作成する場合は、アプリケーションを共有して有効にする手順を完了する必要があります。
新しい Developer Console アプリケーションを作成するの手順に沿って進め、バックエンドサービス用に次の項目を選択します。


Developer Console は、アプリケーション名に基づいて、このアプリケーション用のサービスユーザーを作成します。上の例では、生成されたサービスユーザーの名前はサービスユーザーを使用するオントロジー SDK アプリケーションです。アクションタイプの実行条件に加えて、次のステップで選択するオブジェクトタイプのデータを読み取るために必要な権限を、このサービスユーザーに付与する必要があります。

オントロジー SDK を生成した後は、関連付けられたオントロジーを変更できません。

入力した情報を確認し、アプリケーションを作成するを選択すると、新しいアプリケーションのクライアントシークレットが表示されます。シークレットが表示されるのはこのときだけなので、コピーして安全に保管してください。

クライアントシークレットを紛失した場合は、[OAuth と制限]ページでローテーションを行い、新しいシークレットを取得できます。ただし、この操作により、このサービスユーザーとシークレットを使用する既存のアプリケーションが動作しなくなることに注意してください。
機密クライアントアプリケーションを Marketplace 用にパッケージ化する場合、クライアントシークレットは含まれません。インストール後、インストール先の環境で[OAuth と制限]に移動し、ローテーションを選択して、新しいシークレットを生成する必要があります。
最後に、最初のバージョンを生成を選択して、新しく作成したオントロジー SDK を使用します。

オントロジー SDK の生成が完了すると、生成された SDK をコードプロジェクトにインストールするための手順が表示されます。
このウォークスルーでは、Next.js© ↗ を使用します。Next.js は、今回のサービスユーザーの例に必要なサーバー側でのコードのレンダリングをサポートしています。新しい Next.js プロジェクトをセットアップするには、Next.js© のドキュメント ↗ の手順に沿って進めてください。
サービスユーザーの認証は、機密 OAuth クライアントを通じて行われます。これにより、ユーザー認証を必要とせず、クライアントシークレットを使用してオントロジーにアクセスできます。
client.ts という名前のファイルを作成し、次のコードを入力します。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14import { createConfidentialOauthClient } from "@osdk/oauth"; import { createClient } from "@osdk/client"; export const auth = createConfidentialOauthClient( process.env.CLIENT_ID!, process.env.CLIENT_SECRET!, process.env.STACK_URL!, ); export const client = createClient( process.env.STACK_URL!, <ONTOLOGY-RID>, auth )
同じ変数を含む .env ファイルを作成します。このファイルをコードリポジトリにチェックインしないでください。
Copied!1 2 3CLIENT_ID=<YOUR CLIENT ID> CLIENT_SECRET=<YOUR CLIENT SECRET> STACK_URL=<YOUR ONTOLOGY SERVER DOMAIN NAME> # たとえば、https://myfoundrystack.com
次のコードでは、Country オブジェクトタイプと @serverside-osdk-example/sdk というパッケージ名を使用しています。例のパッケージ名を作成したパッケージに置き換え、オブジェクトタイプを選択したオブジェクトタイプに置き換えます。最後に、{country.countryName} をオブジェクトタイプのプロパティに置き換えます。
page.tsx のコードを次のコードに置き換えます。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30import { Country } from "@serverside-osdk-example/sdk"; import { client, auth } from "./client"; import { Osdk } from "@osdk/client"; async function getCountries(): Promise<Osdk.Instance<Country>[]> { // 認証を処理します await auth.signIn(); // サービスユーザーにオントロジーへの読み取り権限を付与する必要があります try { const resp = await client(Country).fetchPage(); return resp.data; } catch (err) { console.log(err); } console.log("No countries found"); return []; } export default async function Home() { const countries: Osdk.Instance<Country>[] = await getCountries(); return ( <main> <div> {countries.map((country: Osdk.Instance<Country>) => ( <span key={country.$primaryKey}>{country.countryName}</span> ))} </div> </main> ); }
セットアップした内容のデモを実行するには、まず開発サーバーを起動します。
Copied!1npm run dev
次に、ブラウザーで http://localhost:3000 ↗ にアクセスして、結果を表示します。