我需要根据用户输入动态创建丰富的ui仪表板。我可以从Windows窗体应用程序调用Power Bi仪表板吗?
答案 0 :(得分:1)
这是example在WPF应用程序中的实现方式,但是唯一的区别是WPF中的InvokeScript
方法在WebBrowser本身中,而在WinForms中则在WebBrowser.Document
中。此示例说明如何将Power BI元素嵌入本机桌面应用程序(WPF,WinForms等)中。
首先,您需要知道有两种嵌入Power BI的模式-user owns data
和app owns data
。在第一种模式下,嵌入时,用户将使用其自己的Power BI Pro帐户对自己进行身份验证,即每个用户都需要Power BI Pro许可证。对于后一个,您仅需要一个“主帐户”,该帐户将用于身份验证。实现上的差异不是很大,因此我将描述app owns data
。
您需要执行以下操作:
注册应用程序-转到dev.powerbi.com/apps并注册本机应用程序。选择授予它的权限(如果不确定,对于您的第一个测试,只需将它们全部授予)。复制Guid-这是应用程序ID,也就是客户端ID。
下一步是从您的应用程序进行身份验证并获取访问令牌。为此使用Azure Active Directory Authentication Library (ADAL)-调用acquireToken
类的某些AuthenticationContext
方法。
使用此访问令牌来调用Power BI REST API并获取要嵌入的元素的embedUrl
,例如report。
使用Power BI JavaScript client实际嵌入此元素。您需要初始化一个embed configuration class并传递有关元素类型(报告,仪表板,磁贴),在何处查找(embedUrl),身份验证(访问令牌),其他一些配置选项(显示或隐藏过滤器窗格,导航)的信息等),要应用的过滤器等。如果您将使用上面获得的访问令牌,请将tokenType
设置为AAD
。该令牌具有许多特权,因此出于安全原因,您可能需要使用Embed
令牌。在这种情况下,请使用访问令牌再次调用REST API(例如Reports GenerateTokenInGroup)。
调用powerbi.embed
方法传递嵌入式配置,以在您的应用程序中可视化此Power BI元素。