javascript - 通过 PowerBI API 在嵌入 View 中创建报告

标签 javascript node.js powerbi powerbi-embedded

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

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

但是,我通过 Power BI API 调用生成嵌入 token ,正如文档允许的: 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,
);

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

提前致谢!

最佳答案

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

关于javascript - 通过 PowerBI API 在嵌入 View 中创建报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49177971/

相关文章:

javascript - JSONWebTokenError : JWT Malformed at index. js

node.js - 在使用 Node.js 的 Mac 上,Finder 别名无法识别为符号链接(symbolic link)

powerbi - 从相对路径将数据加载到 Power BI

excel - 将不同查询的最新值查找到新列中

type-conversion - Power BI 使用 DAX 将八位数字 yyyymmdd 转换为日期

javascript - Angular js 与 Parse

c# - 按钮不适用于更新面板

javascript - 无法使用 .attr() 设置多个属性

javascript - 重新排序 HTML 元素并更改内容

node.js - Node Facebook Passport 仅返回某些字段,无论发送范围如何