注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

サービスユーザーを使用する新しいオントロジー SDK TypeScript アプリケーションをセットアップする

権限の種類セクションで説明されているように、オントロジー SDK を使用すると、エンドユーザーの権限ではなくサービスユーザーの権限に基づいてデータをクエリできます。次のウォークスルーでは、Next.js© ↗(外部)を使用し、オントロジー SDK とサービスユーザーでデータを取得する方法を説明します。

機密クライアントを使用するサービスまたはアプリケーションを開発する場合、Developer Console アプリケーションとともにサービスユーザーが作成されます。デフォルトの組織とは別の組織に属するオントロジーを使用してアプリケーションを作成する場合は、アプリケーションを共有して有効にする手順を完了する必要があります。

1. Developer Console を使用してオントロジー SDK パッケージを作成する

新しい Developer Console アプリケーションを作成するの手順に沿って進め、バックエンドサービス用に次の項目を選択します。

バックエンドサービスが選択されたアプリケーションタイプの選択ページ。

アプリケーションの権限の選択肢が選択された権限ページ。

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

  • リソースページで、はい、オントロジー SDK を生成しますを選択します。

オントロジー SDK を生成する選択肢が表示されたリソースページ。

  • 使用するオントロジーを選択します。

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

  • オントロジー SDK パッケージに含めるオブジェクトタイプとアクションタイプを選択します。この演習では、利用可能な任意のオブジェクトタイプを選択します。

SDK で使用するオントロジーと、含めるオブジェクトタイプまたはアクションタイプを選択します。

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

ポップアップに表示されたサーバー側のクライアントシークレットをコピーし、安全に保管します。

クライアントシークレットを紛失した場合は、[OAuth と制限]ページでローテーションを行い、新しいシークレットを取得できます。ただし、この操作により、このサービスユーザーとシークレットを使用する既存のアプリケーションが動作しなくなることに注意してください。

機密クライアントアプリケーションを Marketplace 用にパッケージ化する場合、クライアントシークレットは含まれません。インストール後、インストール先の環境で[OAuth と制限]に移動し、ローテーションを選択して、新しいシークレットを生成する必要があります。

最後に、最初のバージョンを生成を選択して、新しく作成したオントロジー SDK を使用します。

最初のバージョンを生成ボタンを選択して SDK を作成します。

2. 生成された SDK パッケージをインストールする

オントロジー SDK の生成が完了すると、生成された SDK をコードプロジェクトにインストールするための手順が表示されます。

3. コードプロジェクトでオントロジー SDK を使用する

このウォークスルーでは、Next.js© ↗ を使用します。Next.js は、今回のサービスユーザーの例に必要なサーバー側でのコードのレンダリングをサポートしています。新しい Next.js プロジェクトをセットアップするには、Next.js© のドキュメント ↗ の手順に沿って進めてください。

クライアントと OAuth の作成

サービスユーザーの認証は、機密 OAuth クライアントを通じて行われます。これにより、ユーザー認証を必要とせず、クライアントシークレットを使用してオントロジーにアクセスできます。

client.ts という名前のファイルを作成し、次のコードを入力します。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 import { 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 3 CLIENT_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 30 import { 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!
1 npm run dev

次に、ブラウザーで http://localhost:3000 ↗ にアクセスして、結果を表示します。