埋め込みアプリケーションのトラブルシューティング

この記事では、Power BI からコンテンツを埋め込むときに発生する可能性がある一般的な問題について説明します。

トラブルシューティング ツール

Fiddler のトレース

Fiddler は、HTTP トラフィックを監視する Telerik 提供の無償ツールです。 クライアント コンピューターから Power BI API によるトラフィックを確認できます。 このツールでは、エラーとその他の関連する情報が表示される場合があります。

Fiddler ツールの出力ウィンドウのスクリーンショット。Power BI API の HTTP トラフィックが表示されています。

ブラウザーで F12 キーを押してフロントエンド デバッグを実行する

F12 キーを押すと、ブラウザー内で開発者ウィンドウが起動します。 このツールを使用すると、ネットワーク トラフィックやその他重要な情報を確認できます。

Web ブラウザーの開発者ウィンドウの [ネットワーク] タブのスクリーンショット。ネットワーク トラフィックが表示されています。

Power BI 応答からエラーの詳細を抽出する

このコード スニペットは、HTTP 例外からエラーの詳細を抽出する方法を示しています。

public static string GetExceptionText(this HttpOperationException exc)
{
    var errorText = string.Format("Request: {0}\r\nStatus: {1} ({2})\r\nResponse: {3}",
    exc.Request.Content, exc.Response.StatusCode, (int)exc.Response.StatusCode, exc.Response.Content);
    if (exc.Response.Headers.ContainsKey("RequestId"))
    {
        var requestId = exc.Response.Headers["RequestId"].FirstOrDefault();
        errorText += string.Format("\r\nRequestId: {0}", requestId);
    }

    return errorText;
}

要求 ID (およびエラーの詳細をトラブルシューティングのために) をログに記録することをお勧めします。 Microsoft サポートに連絡する際に、要求 ID を指定してください。

アプリの登録

アプリ登録エラー

Azure portal または Power BI アプリ登録ページ内のエラー メッセージは、アプリを登録するための十分な権限がない場合に通知されます。 アプリケーションを登録するには、Microsoft Entra テナントの管理者になる必要があります。または、非管理者ユーザーのアプリケーション登録を有効にする必要があります。

新しいアプリを登録したとき、Power BI サービスが Azure portal に表示されない

少なくとも 1 名のユーザーを Power BI に登録する必要があります。 API 一覧に Power BI サービスが表示されない場合、Power BI にユーザーが登録されていません。

アプリケーション オブジェクト ID とプリンシパル オブジェクト ID の違いは何ですか?

Microsoft Entra アプリを登録する場合は、"オブジェクト ID" と呼ばれる 2 つのパラメータがあります。 このセクションでは、各パラメーターの目的と、それを取得する方法について説明します。

アプリケーション オブジェクト ID

アプリケーション オブジェクト ID (単に "オブジェクト ID" とも呼ばれます) は、Microsoft Entra アプリケーション オブジェクトの一意の ID です。

アプリケーション オブジェクト ID を取得するには、Microsoft Entra アプリに移動し、[概要] からコピーしてください。

Azure portal ウィンドウのスクリーンショット。Microsoft Entra アプリケーションの [概要] ブレードにオブジェクト ID が表示されています。

プリンシパル オブジェクト ID

プリンシパル オブジェクト ID (単に "オブジェクト ID" とも呼ばれます) は、Microsoft Entra アプリケーションに関連付けられたサービス プリンシパル オブジェクトの一意の ID です。

プリンシパル オブジェクト ID を取得するには、Microsoft Entra アプリに移動し、[概要] の [ローカル ディレクトリの管理対象アプリ] にあるアプリ リンクを選択してください。

Azure portal ウィンドウのスクリーンショット。Microsoft Entra アプリケーションの [概要] ブレードの [ローカル ディレクトリでのマネージド アプリケーション] オプションが表示されています。

[プロパティ] セクションから、 [オブジェクト ID] をコピーします。

Azure portal ウィンドウのスクリーンショット。Microsoft Entra アプリケーションの [概要] ブレードのプロパティ セクションにプリンシパル オブジェクト ID が表示されています。

認証

AADSTS70002 または AADSTS50053 で認証が失敗しました

(AADSTS70002: 資格情報の検証エラー。AADSTS50053: 正しくないユーザー ID またはパスワードでのサインインの試行回数が上限に達しました)

Power BI Embedded と Microsoft Entra 直接認証を使用している場合、サインインしようとすると前のメッセージのようなメッセージを受け取ることがあります。これは、直接認証が有効になっていないためです。

組織またはサービス プリンシパルにスコープ設定された Microsoft Entra ポリシーを使用して、直接認証をオンに戻すことができます。

このポリシーは、アプリごとにのみ有効にすることをお勧めします。

このポリシーを作成するには、ポリシーを作成して割り当てるディレクトリに対してグローバル管理者である必要があります。 ポリシーを作成してこのアプリケーションの SP に割り当てるサンプル スクリプトを次に示します。

  1. Microsoft Graph PowerShell SDK をインストールします。

  2. 次の PowerShell コマンドを 1 行ずつ実行します (結果として、変数 $sp に複数のアプリケーションが含まれていないことを確認します)。

    Connect-MgGraph -Scopes "Directory.Read.All","Policy.ReadWrite.ApplicationConfiguration"
    
    $sp = Get-MgServicePrincipal -Filter "DisplayName eq 'Name_Of_Application'"
    
    $policy = New-MgBetaPolicyActivityBasedTimeoutPolicy -Definition @("{`"AllowCloudPasswordValidation`":true}") `
       -DisplayName EnableDirectAuth -IsOrganizationDefault:$false
    
    $params = @{
       "@odata.id" = "https://graph.microsoft.com/v1.0/policies/claimsMappingPolicies/$policy.Id"
    }
    New-MgBetaServicePrincipalClaimMappingPolicyByRef -ServicePrincipalId $sp.Id `
       -BodyParameter $params
    

ポリシーを割り当てたら、テストを行う前に、約 15 秒から 20 秒、伝達のための時間を待機します。

有効な ID が与えられた GenerateToken が失敗する

いくつかの理由から、有効な ID が与えられた GenerateToken が失敗することがあります。

  • セマンティック モデルが有効な ID に対応していない。
  • ユーザー名が指定されていない。
  • ロールが指定されていない。
  • DatasetId が指定されていない。
  • ユーザーに正しいアクセス許可が与えられていない。

問題を特定するには、次の手順をお試しください。

  • データセットの取得を実行します。 プロパティ IsEffectiveIdentityRequired は true ですか?
  • すべての EffectiveIdentity にはユーザー名が必要です。
  • IsEffectiveIdentityRolesRequired が true の場合は、ロールが必要です。
  • すべての EffectiveIdentity には DatasetId が必要です。
  • Analysis Services の場合、マスター ユーザーをゲートウェイ管理者にする必要があります。

AADSTS90094: 許可には管理者権限が必要です

症状:

同意を与えるとき、管理者以外のユーザーがアプリケーションに初めてサインインすると、次のいずれかのエラーが返されます。

  •   ConsentTest needs permission to access resources in your organization that only an admin can grant. Ask an admin to grant permission to this app before you can use it.
    
  •   AADSTS90094: The grant requires admin permission.
    

    Consent Test のアクセス許可エラーを示す、Azure portal ウィンドウのサインイン ダイアログのスクリーンショット。

管理者ユーザーは正常にサインインし、同意を許可することができます。

根本原因:

ユーザーの同意がテナントに対して無効です。

いくつかの修正方法が可能です:

  • テナント全体に対するユーザーの同意を有効にする (すべてのユーザー、すべてのアプリケーション)。
  1. Azure portal で、[Microsoft Entra ID]>[ユーザーとグループ]>[ユーザー設定] の順に移動してください。
  2. [ユーザーはアプリが自身の代わりに会社のデータにアクセスすることを許可できます] 設定を有効にし、変更を保存します。

Azure portal のスクリーンショット。

  • 管理者は、テナント全体または特定のユーザーのいずれかを対象として、アプリケーションへのアクセス許可を付与することができます。

CS1061 エラー

次のエラーが発生した場合は、Microsoft.IdentityModel.Clients.ActiveDirectory をダウンロードしてください。

'AuthenticationContext' does not contain a definition for 'AcquireToken' and no accessible 'AcquireToken' accepting a first argument of type 'AuthenticationContext' could be found (are you missing a using directive or an assembly reference?)

別のテナント (ゲスト ユーザー) の Microsoft Entra トークン

"組織向けに埋め込む" ときに、Microsoft Entra のゲスト ユーザーがコンテンツにアクセスできるようにするには、authorityUri パラメータでテナント ID を指定する必要があります。

  • 組織のテナントで認証するための URL:

    https://login.microsoftonline.com/common/v2.0

  • ゲスト Microsoft Entra ユーザーを認証するための URL:

    https://login.microsoftonline.com/<tenant ID>

ご自分のテナント ID を見つけるには、「Microsoft Entra テナント ID とプライマリ ドメイン名を検索する」の手順を使用してください。

詳しくは、「アプリケーションのマルチテナント化」を参照してください。

データ ソース

ISV が同じデータ ソースに対して複数の資格情報を求める

データ ソースには、1 つのマスター ユーザーに対して 1 つの資格情報セットを与えることができます。 異なる資格情報を使用する必要がある場合は、追加のマスター ユーザーを作成します。 次に、マスター ユーザーのコンテキストごとに異なる資格情報を割り当て、そのユーザーの Microsoft Entra トークンを使用して埋め込みます。

IError オブジェクトによる埋め込みアプリケーションのトラブルシューティング

JavaScript SDK から error イベントによって返される IError オブジェクトを使用して、アプリケーションをデバッグし、エラーの原因に対する理解を深めます。

IError オブジェクトを取得したら、使用している埋め込みの種類に応じた、該当する一般的なエラーのテーブルを確認する必要があります。 IError のプロパティとテーブル内のプロパティを比較し、エラーの考えられる理由を見つけてください。

Power BI ユーザー向けに埋め込む場合に発生する一般的なエラー

メッセージ 詳細なメッセージ エラー コード 考えられる理由
TokenExpired Access token has expired, resubmit with a new access token (アクセス トークンの期限が切れました。新しいアクセス トークンを使用して再送信してください) 403 トークンの有効期限が切れました
PowerBIEntityNotFound Get report failed (レポートの取得に失敗しました) 404
  • レポート ID が正しくありません
  • レポートが存在しません
  • 正しくないパラメーター powerbiToken parameter not specified (powerbiToken パラメーターが指定されていません) 該当なし
  • アクセス トークンが指定されていません
  • レポート ID が指定されていません
  • LoadReportFailed Fail to initialize - Couldn't resolve cluster (初期化できません - クラスターを解決できませんでした) 403
  • 不正なアクセス トークン
  • 埋め込みの種類がトークンの種類に一致しません
  • PowerBINotAuthorizedException Get report failed (レポートの取得に失敗しました) 401
  • グループ ID が正しくありません
  • 許可されていないグループです
  • TokenExpired Access token has expired, resubmit with a new access token. (アクセス トークンの期限が切れました。新しいアクセス トークンを使用して再送信してください。) Couldn't render a report visual titled: (次のタイトルのレポートのビジュアルを表示できませんでした:) <ビジュアルのタイトル> 該当なし
  • データのクエリ
  • トークンの有効期限が切れました
  • OpenConnectionError ビジュアルを表示できません。 Couldn't render a report visual titled: (次のタイトルのレポートのビジュアルを表示できませんでした:) <ビジュアルのタイトル> 該当なし 容量に関連するレポートをセッションで開いているときに容量が一時停止または削除されました
    ExplorationContainer_FailedToLoadModel_DefaultDetails このレポートに関連付けられているモデル スキーマを読み込むことができません。 サーバーに接続できることを確認して、もう一度やり直してください。 該当なし
  • 容量が一時停止されました
  • 容量が削除されました
  • Power BI 以外のユーザー向けに埋め込む場合に発生する一般的なエラー (埋め込みトークンを使用)

    メッセージ 詳細なメッセージ エラー コード 理由
    TokenExpired Access token has expired, resubmit with a new access token (アクセス トークンの期限が切れました。新しいアクセス トークンを使用して再送信してください) 403 トークンの有効期限が切れました
    LoadReportFailed Get report failed (レポートの取得に失敗しました) 404
  • レポート ID が正しくありません
  • レポートが存在しません
  • LoadReportFailed Get report failed (レポートの取得に失敗しました) 403 レポート ID がトークンに一致しません
    LoadReportFailed Get report failed (レポートの取得に失敗しました) 500 レポートが指定した ID が GUID ではありません
    正しくないパラメーター powerbiToken parameter not specified (powerbiToken パラメーターが指定されていません) 該当なし
  • アクセス トークンが指定されていません
  • レポート ID が指定されていません
  • LoadReportFailed Fail to initialize - Couldn't resolve cluster (初期化できません - クラスターを解決できませんでした) 403 トークンの種類が正しくないか、無効なトークンです
    PowerBINotAuthorizedException Get report failed (レポートの取得に失敗しました) 401 グループ ID が正しくないか、許可されていません
    TokenExpired Access token has expired, resubmit with a new access token. (アクセス トークンの期限が切れました。新しいアクセス トークンを使用して再送信してください。) Couldn't render a report visual titled: (次のタイトルのレポートのビジュアルを表示できませんでした:) <ビジュアルのタイトル> 該当なし
  • データのクエリ
  • トークンの有効期限が切れました
  • OpenConnectionError ビジュアルを表示できません。 Couldn't render a report visual titled: (次のタイトルのレポートのビジュアルを表示できませんでした:) <ビジュアルのタイトル> 該当なし 容量に関連するレポートをセッションで開いているときに容量が一時停止または削除されました
    ExplorationContainer_FailedToLoadModel_DefaultDetails このレポートに関連付けられているモデル スキーマを読み込むことができません。 サーバーに接続できることを確認して、もう一度やり直してください。 該当なし
  • 容量が一時停止されました
  • 容量が削除されました
  • レポートの取得が失敗する - エラー 401 - 自動的に解決される

    "ユーザー所有データ" シナリオでは、ユーザーが 401 エラーを受け取ることがありますが、これは Power BI ポータルにアクセスした後で自動的に解決されます。 401 エラーが発生する場合は、「ユーザーのアクセス許可を更新する」で説明されているように、アプリに RefreshUserPermissions の呼び出しを追加します。

    セマンティック モデル

    ユーザーに表示されるデータの一部を管理する

    セマンティック モデルに対する読み取りアクセス許可を持つすべてのユーザーには、スキーマ全体 (テーブル、列、メジャー) とすべてのデータが表示されます。 同じセマンティック モデル内の生データと集計データに対して、表示アクセス許可を個別に制御することはできません。

    ユーザーが表示できるデータの部分を管理するには、次のいずれかの方法を使用します。

    コンテンツ レンダリング

    埋め込まれた Power BI 項目 (レポートやダッシュボードなど) でのレンダリングの問題を解決するには、このセクションを確認してください。

    Power BI 項目が Power BI サービスに読み込まれたことを確認する

    アプリケーション "または埋め込み API" に関する問題を除外するには、Power BI サービス (powerbi.com) で項目を表示できることを確認します。

    Power BI 項目が Power BI 埋め込み分析プレイグラウンドに読み込まれたことを確認する

    アプリケーションの問題を除外するには、Power BI 埋め込み分析プレイグラウンドで Power BI 項目を表示できることを確認します。

    アクセス トークンの有効期限が切れていないことを確認する

    セキュリティ上の理由から、アクセス トークン (Microsoft Entra トークンまたは埋め込みトークン) の有効期間は限られています。 アクセス トークンを常に監視し、必要に応じて更新する必要があります。 詳細については、アクセス トークンの更新に関するページをご覧ください。

    パフォーマンス

    埋め込みコンテンツを最大限に活用するには、Power BI 埋め込み分析のベスト プラクティスに従うことをお勧めします。

    埋め込みセットアップ ツール

    埋め込みセットアップ ツールに関するページに移動し、サンプル アプリケーションをすばやくダウンロードすることができます。 その後、アプリケーションとサンプルを比較できます。

    前提条件

    埋め込みセットアップ ツールを使う前に、適切な前提条件がすべてあることを確認します。 Power BI Pro アカウントと Microsoft Azure サブスクリプションが必要です。

    一般的な問題

    埋め込みセットアップ ツールを使ってテストするときに発生する可能性がある一般的な問題は次のとおりです。

    顧客サンプル アプリケーションへの埋め込みの使用

    顧客向けの埋め込みエクスペリエンスを使用している場合、PowerBI-Developer-Samples.zip ファイルを保存して解凍します。 その後、PowerBI-Developer-Samples-master\App Owns Data フォルダーを開き、PowerBIEmbedded_AppOwnsData.sln ファイルを実行します。

    • [アクセス許可の付与] を選ぶと ([アクセス許可の付与] ステップ)、次のエラーが発生します。
    AADSTS70001: Application with identifier <client ID> wasn't found in the directory <directory ID>
    

    解決するには、ポップアップを閉じ、数秒待ってから、もう一度やり直してください。 この操作を数回繰り返す必要があるかもしれません。 アプリケーション登録プロセス完了から外部 API で使用可能になるまでの時間間隔が問題の原因です。

    • サンプル アプリを実行すると、次のエラー メッセージが表示されます。
    Password is empty. Please fill password of Power BI username in web.config.
    

    このエラーは、サンプル アプリケーションに挿入されていない唯一の値がユーザー パスワードであるために発生します。 ソリューションの Web.config ファイルを開き、pbiPassword フィールドにユーザーのパスワードを入力します。

    • エラーが発生した場合は、次のようにします。
    AADSTS50079: The user is required to use multi-factor authentication.
    

    MFA が有効になっていない Microsoft Entra アカウントを使用する必要があります。

    組織のサンプル アプリケーションでの埋め込みの使用

    組織向けの埋め込みエクスペリエンスを使用している場合、PowerBI-Developer-Samples.zip ファイルを保存して解凍します。 PowerBI-Developer-Samples-master\User Owns Data\integrate-report-web-app フォルダーを開き、pbi-saas-embed-report.sln ファイルを実行します。

    • 組織向けの埋め込みサンプル アプリを実行すると、次のエラーが発生します。
    AADSTS50011: The reply URL specified in the request doesn't match the reply URLs configured for the application: <client ID>
    

    このエラーは、Web サーバー アプリケーションに対して指定されているリダイレクト URL が、サンプルの URL と異なるためです。 サンプル アプリケーションを登録する場合は、リダイレクト URL として https://localhost:13526/ を使用します。

    登録済みのアプリケーションを編集する場合は、Microsoft Entra 登録済みアプリケーションを更新し、アプリケーションから Web API へのアクセスが提供されるようにします。

    Power BI のユーザー プロファイルまたはデータを編集する場合は、Power BI データの編集方法を確認してください。

    • エラーが発生した場合は、次のようにします。
    AADSTS50079: The user is required to use multi-factor authentication.
    

    MFA が有効になっていない Microsoft Entra アカウントを使用する必要があります。

    詳しくは、「Power BI Embedded に関してよく寄せられる質問」をご覧ください。

    追加のサポートが必要な場合は、サポートに問い合わせるか、Azure portal でサポート チケットを作成し、発生したエラー メッセージを指定してください。

    他にわからないことがある場合は、 Power BI コミュニティに質問する