首页 > 解决方案 > 获取嵌入 PowerBi Angular 8 的正确令牌

问题描述

我正在按照这个示例在 Angular 6 应用程序中嵌入报告。我需要花一些时间才能使其在 Angular 8 上运行。

https://www.c-sharpcorner.com/article/how-to-embed-powerbi-report-in-angular-6/

最后一件事是访问令牌。

为了获得短期令牌,我使用 Postman 和以下端点:

https://login.microsoftonline.com/38efd35e-da65-4e47-8656-876039ad15b1/oauth2/token

其中 38efd35e-da65-4e47-8656-876039ad15b1 是我的 TenantId。

我提供了 App ID 和 client_secret。资源是https://analysis.windows.net/powerbi/api

我能够通过调用生成令牌。

报告 ID 在新工作区中。在访问控制中,将应用 ID 添加为管理员(服务主体)。在代码中,我提供了报告 ID 和组 ID。该应用程序具有 Power Bi 服务的权限。当我使用 Postman 中生成的令牌作为 access_token 时,我在 Angular 控制台中显示 403 错误。

我可能做错了什么?什么不见​​了?它是错误的承载令牌吗?我应该使用其他东西吗?

MS 没有为该过程提供清晰的分步指南。

最好我想坚持使用 Javascript/typescript 堆栈而不涉及 .NET 或 C#。

标签: node.jsangularpowerbi-embedded

解决方案


答案是肯定的,您缺少使用在 Postman 上生成的访问令牌生成嵌入令牌的步骤。您需要使用嵌入令牌,而不是直接使用访问令牌来嵌入您的报告,因为您使用服务主体作为嵌入方法。您还需要提供用于嵌入嵌入配置中的令牌类型,如下所示:

var models = window['powerbi-client'].models;
var config = {
    type: 'report',
    tokenType: models.TokenType.Embed,
    accessToken: accessToken,
    embedUrl: embedUrl,
    id: embedReportId,
    settings: {}
};

由于“服务主体”和“主用户”属于“为您的客户嵌入”,因此必须生成嵌入令牌。然而,如果您只想使用访问令牌,您可以使用“为您的组织嵌入”,其中用户(使用专业帐户)需要登录(如果尚未登录)以生成访问令牌。

您可以参考此链接以了解使用 Power BI 进行嵌入。

有两种类型的嵌入,你可以参考这些链接:

  1. 为您的组织嵌入
  2. 为您的客户嵌入

您还可以参考在 React 技术上为“为您的组织嵌入”嵌入类型创建的全新示例。


推荐阅读