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

时间:2017-06-29 13:53:19

标签: powerbi powerbi-embedded

早些时候我曾经使用过“loadReport'来自javascript,它不适用于新的PBI Premium,例如以下不再适用&它总是说"这个内容不可用"。顺便说一句,这仍然适用于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>
&#13;
&#13;
&#13;

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

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

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

由于

1 个答案:

答案 0 :(得分:0)

在两种方法中改变的主要内容是属性TokenType.Embed,它不是以“旧方式”提供的,即“loadReport”消息格式。

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

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