PowerBi-Javascript报告嵌入群集详细信息403错误

时间:2018-12-20 15:08:53

标签: typescript powerbi powerbi-embedded

我正在尝试在打字稿应用程序中显示Power Bi报告。

我已经成功地从AAD获得了访问令牌,并且实际上可以通过Power Bi Rest api使用它。我希望能够使用PowerBi-Javascript来保持清洁并能够应用过滤器。但是,每次调用https://api.powerbi.com/powerbi/globalservice/v201606/clusterdetails时,我每次都收到403错误,说“ TokenExpired”(即使令牌是新生成的,并且应该至少有效一个小时)。

嵌入报告的代码如下:

private embedReport(accessToken: string): powerBiClient.Embed {
  const element = this.getDisplayElement();
  const reportId = this.getReportId();
  const config = {
    type: 'report',
    id: reportId,
    tokenType: powerBiClient.models.TokenType.Aad,
    accessToken: accessToken
  };
  return this.powerBiService.embed(element, config);

getDisplayElement返回适当的HTMLElement,getReportId显示要显示的报告的ID,powerBiClient是powerbi-javascript导入,powerBiService是{{ 1}}。

我尝试使用自己拥有的报告以及组中的报告(将groupId添加到配置中)进行此操作。

如何解决此错误?

2 个答案:

答案 0 :(得分:0)

您似乎在配置中缺少embedUrl选项(请参阅文档中的this example)。这是从Power BI REST API返回的,例如在get reports API中。

答案 1 :(得分:0)

我已使用Angular 7进行了以下操作。

组件:

showReport() {
 let accessToken = 'your access token’;
   // Embed URL
   let embedUrl = 'your embed URL';
   // Report ID
   let embedReportId = 'your embed report ID';
   let config = {
     type: 'report',
     pageName: 'aaa',
     name: 'Chamila',
     accessToken: accessToken,
     embedUrl: embedUrl,
     id: embedReportId,
     permissions: pbi.models.Permissions.All,
     viewMode: pbi.models.ViewMode.Edit,
     settings: {
       localeSettings: {
         language: "en",
         formatLocale: "es"
       },
     }
   };
   // Grab the reference to the div HTML element that will host the report.
   let reportContainer = <HTMLElement>document.getElementById('reportContainer');
   // Embed the report and display it within the div container.
   let powerbi = new pbi.service.Service(pbi.factories.hpmFactory, pbi.factories.wpmpFactory, pbi.factories.routerFactory);
   let report = powerbi.embed(reportContainer, config);
 }

HTML:

<div id="reportContainer"></div>

替换适当的访问令牌,嵌入的URL和报告ID。它对我来说很完美。