我正在尝试从嵌入视图中的数据集创建新报表。但是,我一直得到"这个内容不可用"并且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,
);
我错过了某些范围吗?
提前致谢!
答案 0 :(得分:0)
您正在使用错误的embedURL ... AppTokenReportEmbed是OLD(不建议使用)的工作空间集合方式。 由于您使用的是GenerateToken,请输入以下embedURL: ' https://embedded.powerbi.com/reportEmbed'
答案 1 :(得分:0)
您可以尝试使用以下嵌入网址: https://app.powerbi.com/reportEmbed?reportId=MyReportID123&groupId=MyGroupID123;并提供您希望嵌入的报告的 ReportID 和 GroupID 。
答案 2 :(得分:0)
在嵌入应用程序中创建新报告。您将不得不使用 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