【问题标题】:Create Report in Embed View via PowerBI API通过 PowerBI API 在嵌入视图中创建报表
【发布时间】:2018-03-08 16:29:23
【问题描述】:

我正在尝试从嵌入视图中的数据集创建新报表。但是,我不断收到“此内容不可用”,并且 reportEmbed.min.js 在渲染时返回 403。在 app.powerbi.com 中,我可以成功创建和保存报告,但如上所述,嵌入式视图不起作用。

我完全遵循此文档: https://github.com/Microsoft/PowerBI-JavaScript/wiki/Create-Report-in-Embed-View

但是,我通过 Power BI API 调用生成我的嵌入令牌,因为此处的文档允许: https://msdn.microsoft.com/en-us/library/mt784614.aspx

这是我的服务器端 embedToken 生成代码:

const createReportEmbedTokenForCreation = ({
  accessToken,
  groupId,
  datasetId,
}) =>
  new Promise((resolve, reject) => {
    const url = `https://api.powerbi.com/v1.0/myorg/groups/${groupId}/reports/GenerateToken`;
    const headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
    Authorization: `Bearer ${accessToken}`,
  };
  const form = {
    accessLevel: 'Create',
    datasetId,
    allowSaveAs: true,
  };
  request.post({ url, form, headers }, (err, result, body) => {
    if (err) return reject(err);
    const bodyObj = JSON.parse(body);
    if (bodyObj.error) return reject(new Error(body));
    return resolve(bodyObj.token);
  });
});

这是我的客户端嵌入代码:

const config = {
  accessToken: embedToken,
  embedUrl: 'https://embedded.powerbi.com/appTokenReportEmbed',
  datasetId: defaultReport.datasetId,
};
const report = powerbi.createReport(
  document.getElementById('ReportEmbed'),
  config,
);

我是否在某些地方遗漏了一些范围?

提前致谢!

【问题讨论】:

    标签: javascript node.js powerbi powerbi-embedded


    【解决方案1】:

    您使用了错误的 embedURL... AppTokenReportEmbed 是旧的(已弃用)工作区收集方式。 由于您使用的是 GenerateToken,请输入以下 embedURL: 'https://embedded.powerbi.com/reportEmbed'

    【讨论】:

      【解决方案2】:

      在嵌入应用程序中创建新报告。您必须使用 API -GenerateTokeForCreateInGroup

      所以服务器端看起来像这样:

      // Generate an embed token to create
      var generateTokenRequestParameters = new GenerateTokenRequest(
          TokenAccessLevel.Create,    
          “enter your datasetid”,    
          allowSaveAs: true    
      );
      
      var tokenResponse = client.Reports.GenerateTokenForCreateInGroup(“enter your workspaceid”, generateTokenRequestParameters);
      
      // Populate embed variables (to be passed client-side)    
      embedToken = tokenResponse.Token;    
      embedUrl = “https://app.powerbi.com/reportEmbed?groupId=” + “enter your workspaceid”;
      datasetId = “enter your workspaceid”;
      

      注意:此 API 不支持行级安全性。因此,没有 GenerateTokenRequest中已经定义了有效身份。

      您的客户端代码将如下所示:

      // Read embed token
      var embedToken = “<% = this.embedToken %>”;
      
      // Read embed URL
      var embedUrl = “<% = this.embedUrl %>”;
      
      // Read dataset Id
      var datasetId = “<% = this.datasetId %>”;
      
      // Get models (models contains enums)
      var models = window[‘powerbi-client’].models;
      
      // Embed configuration is used to describe what and how to embed
      // This object is used when calling powerbi.embed
      // It can also includes settings and options such as filters
      
      var embedCreateConfiguration = {
          type: ‘report’,
          tokenType: models.TokenType.Embed,
          accessToken: embedToken,
          embedUrl: embedUrl,
          datasetId: datasetId,
      };
      
      // Embed the report within the div element
      var report = powerbi.createReport(embedDiv, embedCreateConfiguration);
      var saveAsParameters = {
          name: “newReport”
      };
      
      // SaveAs report
      report.saveAs(saveAsParameters);
      

      更多信息可以参考这篇博客:https://addendanalytics.com/create-a-new-report-in-embed-view/。另外,你也可以参考微软官方文档:https://docs.microsoft.com/en-us/javascript/api/overview/powerbi/create-edit-report-embed-view?tabs=embed-for-your-customers

      【讨论】:

        【解决方案3】:

        您可以尝试使用以下嵌入 URL: https://app.powerbi.com/reportEmbed?reportId=MyReportID123&groupId=MyGroupID123;并提供您希望嵌入的报告的 ReportIDGroupID

        【讨论】:

          猜你喜欢
          • 2018-06-22
          • 1970-01-01
          • 1970-01-01
          • 2017-10-16
          • 2022-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多