このクイック スタートでは、Fabric埋め込みを使用して、ブラウザー ベースの JavaScript または TypeScript Web アプリにMicrosoft Fabric Real-Time ダッシュボードを追加します。 Fabric埋め込みを使用すると、ユーザーが自分のMicrosoft Entra ID ID と委任されたアクセス許可を使用してダッシュボードにアクセスするときに、アプリにダッシュボードを表示できます。
アプリでは、JavaScript 用 Microsoft Authentication Library (MSAL.js) を使用して、Microsoft Fabric API リソースの委任されたアクセス トークンを要求し、Fabric Embed SDK を使用してダッシュボードをレンダリングします。 完了すると、Fabric ポータルにユーザーを送信せずに、Real-Time ダッシュボードがアプリに表示されます。
Real-Time ダッシュボードを埋め込むための前提条件
開始する前に、「Microsoft Fabric埋め込み環境のセットアップ」を完了してください。 このセットアップでは、このクイック スタートで使用Microsoft Entraアプリの登録、委任されたアクセス許可、Microsoft Fabric ワークスペース、アクティブなFabric容量、ダッシュボードの値が作成または確認されます。
また、次の値とアクセス許可も必要です。
| Requirement | Description |
|---|---|
| Web アプリ プロジェクト | npm を使用するブラウザー ベースの JavaScript または TypeScript アプリ。 このクイック スタートの埋め込みコードは、クライアント側で実行されます。 |
| Microsoft Entra アプリ登録クライアント ID | MSAL.jsを使用してユーザーをサインインさせるアプリ登録のクライアント ID。 |
| Microsoft Entra テナント ID | アプリ登録と Fabric ユーザーが構成されているテナントの ID。 |
| 委任された API アクセス許可 |
Fabric.EmbedとItem.Read.Allに対する委任された同意。 MSAL トークン要求では、Fabric .default スコープを使用して、これらの同意されたアクセス許可を要求します。 |
| ワークスペース ID | リアルタイム ダッシュボードを含み、アクティブな Fabric 容量に割り当てられている Microsoft Fabric ワークスペース ID。 |
| リアルタイム ダッシュボード項目ID | 埋め込みたい Real-Time Dashboard の Microsoft Fabric のアイテム ID。 |
| ユーザー アクセス | サインインしているユーザーは、Fabricで Real-Time ダッシュボードを開くことができます。 埋め込みダッシュボードでは、そのユーザーの委任されたアクセス許可が使用されます。 |
Note
Microsoft Fabric埋め込みはパブリック プレビュー段階です。 サポートされている項目の種類と認証の制限については、「Microsoft Fabric埋め込みの制限事項」を参照してください。
MSAL.js と Fabric 埋め込み SDK をインストールする
Web アプリ プロジェクト フォルダーから、このクイック スタートで使用するクライアント側パッケージをインストールします。
npm install @azure/msal-browser @microsoft/fabric-embed
プレビューのオンボード手順でバージョン固有の Fabric Embed SDK パッケージ コマンドが提供されている場合は、@microsoft/fabric-embed パッケージに対してそのコマンドを使用します。 インストール後、package.json@azure/msal-browserに@microsoft/fabric-embedとdependenciesが一覧表示されていることを確認します。
Microsoft Fabric Embed のMicrosoft Entra認証を構成する
MSAL.js (@azure/msal-browser) は、ユーザーをサインインさせ、https://api.fabric.microsoft.comのMicrosoft ID プラットフォームから委任されたアクセス トークンを取得します。
.default スコープは、アプリの登録に既に同意した委任されたFabricアクセス許可 (Fabric.EmbedやItem.Read.Allなど) をMicrosoft Entra IDに求めます。
詳細については、Microsoft Authentication Library (MSAL) の概要を参照してください。
埋め込みコードが getAccessToken()を呼び出す前に、このコードをアプリのクライアント側認証ファイルまたはモジュールに追加します。
import {
AuthenticationResult,
InteractionRequiredAuthError,
PublicClientApplication,
} from "@azure/msal-browser";
const msal = new PublicClientApplication({
auth: {
clientId: "<client-id>",
authority: "https://login.microsoftonline.com/<tenant-id>",
redirectUri: window.location.origin,
},
});
const defaultScopes = ["https://api.fabric.microsoft.com/.default"];
async function getAccessToken(requestedScopes?: string[]): Promise<string> {
const scopes = requestedScopes ?? defaultScopes;
let accounts = msal.getAllAccounts();
if (accounts.length === 0) {
await msal.loginPopup({ scopes });
accounts = msal.getAllAccounts();
}
const account = accounts[0];
if (!account) {
throw new Error("No Microsoft Entra account is signed in.");
}
let result: AuthenticationResult;
try {
result = await msal.acquireTokenSilent({ scopes, account });
} catch (error) {
if (error instanceof InteractionRequiredAuthError) {
result = await msal.acquireTokenPopup({ scopes, account });
} else {
throw error;
}
}
return result.accessToken;
}
<client-id> と <tenant-id> は、山括弧も含めて、Microsoft Entra アプリ登録の値に置き換えてください。
getAccessToken()関数は、サインインしているMicrosoft Entra ユーザーの委任されたMicrosoft Fabric アクセス トークンを返すか、ユーザーがサインインしていない場合はエラーをスローします。
埋め込み Real-Time ダッシュボードの HTML コンテナーを追加する
Fabric Embed SDK が Microsoft Fabric Real-Time ダッシュボードをレンダリングする HTML 要素を追加します。
id値は、埋め込みコード内のコンテナー参照と一致する必要があります。
roleとaria-labelは、スクリーン リーダー ユーザーの埋め込みダッシュボード領域を識別します。
<div
id="fabric-embed-container"
role="region"
aria-label="Embedded Fabric Real-Time Dashboard"
></div>
Fabric Embed SDK のトークン更新用アクセス トークン プロバイダーを構成する
Fabric Embed SDK が埋め込み Real-Time Dashboard の委任された Microsoft Fabric アクセス トークンを更新する際に使用するアクセス トークン プロバイダーを構成します。 次の例では、accessTokenProvider関数を使用してgetAccessToken()を実装します。
const accessTokenProvider = {
callback: async (input?: { scopes?: string[] }) => {
const token = await getAccessToken(input?.scopes);
return { token };
},
};
Fabric埋め込み SDK を使用して Real-Time ダッシュボードを埋め込む
Fabric埋め込み SDK を使用して、MICROSOFT FABRIC Real-Time ダッシュボードを HTML コンテナーにレンダリングします。 このサンプルのパブリック プレビュー SDK の種類では、Real-Time ダッシュボードの埋め込みには KQLDashboard* 名を使用します。
埋め込み構成では、これらの値が使用されます。
| 構成フィールド | Value |
|---|---|
itemId |
前提条件にある Real-Time Dashboard のアイテム ID。 |
workspaceId |
前提条件に記載されている Microsoft Fabric ワークスペース ID。 |
accessToken |
getAccessToken()によって返される委任されたMicrosoft Fabric アクセス トークン。 |
accessTokenProvider |
埋め込みダッシュボードの委任されたトークンを更新するコールバック。 |
viewMode |
KQLDashboardViewMode.Viewをクリックすると、表示用のダッシュボードがレンダリングされます。 |
import {
EmbedManager,
KQLDashboardEmbedClient,
KQLDashboardViewMode,
KQLDashboardEmbedConfiguration,
} from "@microsoft/fabric-embed";
const embedManager = new EmbedManager({
embedClientClasses: [KQLDashboardEmbedClient],
});
async function embedDashboard() {
const container = document.getElementById("fabric-embed-container");
if (!container) {
throw new Error("The Fabric embed container was not found.");
}
const token = await getAccessToken();
const embedConfig: KQLDashboardEmbedConfiguration = {
accessToken: { token },
itemId: "<real-time-dashboard-item-id>",
itemType: "KQLDashboard",
workspaceId: "<workspace-id>",
viewMode: KQLDashboardViewMode.View,
eventHooks: { accessTokenProvider },
};
const client: KQLDashboardEmbedClient = embedManager.embed(container, embedConfig);
client.on("rendered", () => {
console.log("Real-Time Dashboard rendered.");
});
client.on("error", (error: unknown) => {
console.error("Microsoft Fabric Embed error:", error);
});
}
embedDashboard();
コードが実行されると、SDK によってコンテナーに Real-Time ダッシュボードがレンダリングされ、 Real-Time Dashboard rendered. がブラウザー コンソールに書き込まれます。
Important
この記事の SDK 型名では、パブリック プレビューの用語を使用します。 インストールされているプレビュー パッケージで異なる種類の名前が使用されている場合は、そのパッケージ バージョンの名前を使用します。 その他のプレビュー コントラクトの注意事項については、「Microsoft Fabric埋め込みの制限事項」を参照してください。
Microsoft Fabric Embed のリアルタイム ダッシュボードを確認する
SDK は、ダッシュボードが fabric-embed-container リージョンに表示され、ブラウザー コンソールのログが Real-Time Dashboard rendered.されると、正常に埋め込まれます。
ダッシュボードがレンダリングされない場合は、SDK error イベントの詳細を使用して、これらの項目を確認します。
| 検査 | 確認する内容 |
|---|---|
| ユーザー アクセス | サインインMicrosoft Entraユーザーは、Fabricで Real-Time ダッシュボードを開くことができます。 |
| 容量 | Real-Time ダッシュボードを含むワークスペースは、アクティブな Fabric 容量に割り当てられています。 |
| リダイレクト URI | Microsoft Entra アプリの登録には、Web アプリのリダイレクト URI が含まれます。 |
| 委任されたアクセス許可 | アプリの登録では、Fabric.EmbedとItem.Read.All (またはKQLDashboard.Read.All) に対する同意が委任されており、トークン要求ではFabric .defaultスコープが使用されます。 |
| 識別子 | ワークスペース ID と Real-Time ダッシュボード項目 ID は、埋め込むFabricコンテンツと一致します。 |
| HTML コンテナー |
fabric-embed-container要素は存在し、アクセス可能な名前を持ち、アプリ レイアウトのキーボードで到達可能なままです。 |
| SDK エラー処理 | アプリが Fabric Embed SDK error イベントを処理し、エラーの詳細をログに記録します。 |