Power BI Premium - 使用 Power BI API 和 javascript 嵌入,不像以前那样工作

Power BI Premium - embed using Power BI API and javascript not working like previous way

之前我曾经使用 javascript 中的 'loadReport',它不适用于新的 PBI Premium,例如下面的不再工作了,它总是说 "This content isn't available"。顺便说一句,这仍然适用于 PBI 嵌入式报告。

<html>
<body>
<iframe id="iFrameEmbedReport"></iframe>
</body>  
<script type="text/javascript">
window.onload = function () {
    var iframe = document.getElementById('iFrameEmbedReport');
        iframe.src = 'https://app.powerbi.com/reportEmbed?reportId=******-088f-4967-***-279bd5a**df&groupId=*****-****-4033-862d-1cd4f4fa72c1';
        iframe.onload = function() 
  {
   var m = {
    action: 'loadReport',
    accessToken: 'H4s*****'
   };
   message = JSON.stringify(m);
   iframe = document.getElementById('iFrameEmbedReport');
   iframe.contentWindow.postMessage(message, "*");
  };
};
</script>
</html>

但是如果我们使用具有相同配置的 powerbi.js 它工作正常(下图)

<html>
<body>
<div id="reportContainer"></div>
</body>
<script src="https://microsoft.github.io/PowerBI-JavaScript/demo/node_modules/jquery/dist/jquery.js"></script>  
<script src="https://microsoft.github.io/PowerBI-JavaScript/demo/node_modules/powerbi-client/dist/powerbi.js"></script>
<script type="text/javascript">
window.onload = function () { 
    var accessToken = '******************';
 var embedUrl = 'https://app.powerbi.com/reportEmbed?reportId=**********&groupId=**********';
 var embedReportId = '*****-088f-****-aa2d-279bd5a662df';
 var models = window['powerbi-client'].models;
    var config = {
        type: 'report',
        tokenType: models.TokenType.Embed,
        accessToken: accessToken,
        embedUrl: embedUrl,
        id: embedReportId,
        permissions: models.Permissions.All,
        settings: {
            filterPaneEnabled: true,
            navContentPaneEnabled: true
        }
    };
 var reportContainer = $('#reportContainer')[0];
 var report = powerbi.embed(reportContainer, config);
}
</script>
</html>

无法弄清楚发生了什么变化。如果不需要,我真的不想在我的应用程序中包含 powerbi.js。我知道我有一份工作副本,但我真的需要了解发生了什么变化以及是否有任何方法可以避免 powerbi.js。最终目标是在 UWP App 中使用第一种方法。

谢谢

这两种方法中的主要变化是 属性 TokenType.Embed,它在 'old way' 中不可用,即 'loadReport' 消息格式。

这是一种与 Power BI 中的嵌入式实体通信的弃用方式,鼓励所有用户针对新的和维护的 Javascript SDK 编写代码:https://microsoft.github.io/PowerBI-JavaScript/

'loadReport' 方式适用于向后兼容问题,但您将无法使用这种方式在新方法中编写新代码。