問題描述
我正在嘗試從嵌入視圖中的數據集創建新報表.但是,我不斷收到此內容不可用",并且 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 = ({訪問令牌,組ID,數據集ID,}) =>新承諾((解決,拒絕)=> {常量 url = `https://api.powerbi.com/v1.0/myorg/groups/${groupId}/reports/GenerateToken`;常量頭 = {內容類型":應用程序/x-www-form-urlencoded",授權:`Bearer ${accessToken}`,};常量形式 = {訪問級別:'創建',數據集ID,允許保存為:真,};request.post({ url, form, headers }, (err, result, body) => {如果(錯誤)返回拒絕(錯誤);常量 bodyObj = JSON.parse(body);如果(bodyObj.error)返回拒絕(新錯誤(body));返回解析(bodyObj.token);});});
這是我的客戶端嵌入代碼:
const config = {accessToken: embedToken,embedUrl: 'https://embedded.powerbi.com/appTokenReportEmbed',datasetId:defaultReport.datasetId,};常量報告 = powerbi.createReport(document.getElementById('ReportEmbed'),配置,);
我是否在某些地方遺漏了一些范圍?
提前致謝!
在嵌入應用程序中創建一個新報告.您必須使用 API -GenerateTokeForCreateInGroup
.
所以服務器端看起來像這樣:
//生成要創建的嵌入令牌var generateTokenRequestParameters = new GenerateTokenRequest(TokenAccessLevel.創建,輸入你的數據集ID",允許另存為:真);var tokenResponse = client.Reports.GenerateTokenForCreateInGroup(輸入你的workspaceid", generateTokenRequestParameters);//填充嵌入變量(傳遞給客戶端)embedToken = tokenResponse.Token;embedUrl = https://app.powerbi.com/reportEmbed?groupId=" + 輸入你的workspaceid";datasetId = "輸入您的工作空間ID";
<塊引用>
注意:此 API 不支持行級安全性.因此,沒有GenerateTokenRequest中已經定義了有效身份.
您的客戶端代碼將如下所示:
//讀取嵌入令牌var embedToken = <% = this.embedToken %>";//讀取嵌入 URLvar embedUrl = <% = this.embedUrl %>";//讀取數據集 IDvar datasetId = <% = this.datasetId %>";//獲取模型(模型包含枚舉)var models = window['powerbi-client'].models;//嵌入配置用于描述嵌入什么以及如何嵌入//調用 powerbi.embed 時使用該對象//還可以包含過濾器等設置和選項var embedCreateConfiguration = {類型:報告",令牌類型:models.TokenType.Embed,accessToken: embedToken,嵌入網址:嵌入網址,數據集ID:數據集ID,};//將報表嵌入到 div 元素中var report = powerbi.createReport(embedDiv, embedCreateConfiguration);var saveAsParameters = {名稱:新報告"};//另存為報告報告.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
I am trying to create a new report from a dataset in an embedded view. However, I keep getting "This content isn't available" and the reportEmbed.min.js returning a 403 on render. Within app.powerbi.com I can successfully create and save reports, but as mentioned above the embedded view is not working.
I am following this documentation exactly: https://github.com/Microsoft/PowerBI-JavaScript/wiki/Create-Report-in-Embed-View
However, I am generating my embed token via a Power BI API call as documentation allows here: https://msdn.microsoft.com/en-us/library/mt784614.aspx
Here is my server-side, embedToken generation code:
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);
});
});
Here is my client-side embed code:
const config = {
accessToken: embedToken,
embedUrl: 'https://embedded.powerbi.com/appTokenReportEmbed',
datasetId: defaultReport.datasetId,
};
const report = powerbi.createReport(
document.getElementById('ReportEmbed'),
config,
);
Am I missing some scope some where?
Thanks in advance!
To create a new report in the embed application. You will have to use the API -GenerateTokeForCreateInGroup
.
So the server-side will look something like this:
// 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";
Note: Row-Level Security is not supported for this API. Hence, no effective identity has been defined in GenerateTokenRequest.
Your client-side code will look something like this:
// 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);
For more information, you can refer to this blog: https://addendanalytics.com/create-a-new-report-in-embed-view/. Further, you can also refer to Microsoft's official documentation: https://docs.microsoft.com/en-us/javascript/api/overview/powerbi/create-edit-report-embed-view?tabs=embed-for-your-customers
這篇關于通過 PowerBI API 在嵌入視圖中創建報表的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!