无需访问令牌与SSO,嵌入Power BI报表并显示书签窗格可行吗?
可行,且有简化方案
你的需求完全可以实现,核心是通过Power BI JavaScript API的配置强制显示书签窗格,同时让用户自行完成Power BI账号登录,不需要SSO、Azure AD应用注册或你这边做任何认证逻辑。
实现思路
不需要复杂的Rest API令牌生成流程,只需要借助Power BI JS SDK的基础嵌入能力,让用户在嵌入组件内登录自己的Power BI账号,同时通过配置参数强制开启书签窗格:
- 从Power BI服务中获取报表的组织内嵌入URL(不是"发布到Web"的公共链接,而是需要登录的内部嵌入链接)
- 用Power BI JS SDK初始化嵌入组件时,设置
showBookmarksPane: true参数,用户登录后即可自动显示书签窗格
最简代码示例
<!DOCTYPE html> <html> <head> <script src="https://microsoft.github.io/PowerBI-JavaScript/dist/powerbi.min.js"></script> </head> <body> <div id="reportContainer" style="width: 100%; height: 800px;"></div> <script> // 替换为你的报表嵌入URL(从Power BI服务获取) const embedUrl = "https://app.powerbi.com/reportEmbed?reportId=xxx&groupId=xxx"; const config = { type: "report", embedUrl: embedUrl, tokenType: window.powerbi.models.TokenType.Aad, settings: { showBookmarksPane: true, panes: { bookmarks: { visible: true } } } }; // 获取容器元素并初始化嵌入组件 const reportContainer = document.getElementById("reportContainer"); const report = window.powerbi.embed(reportContainer, config); </script> </body> </html>
关键说明
- 为什么必须用JS API?
书签窗格属于Power BI嵌入组件的可配置UI元素,纯iframe默认嵌入不会显示该窗格,只有通过JS API的settings参数才能强制开启,这是Power BI的UI控制机制决定的,没有更底层的简单开关。 - 无需Azure AD应用注册的原因
认证完全由用户自行完成:嵌入组件会引导用户登录自己的Power BI账号(个人版或商业版均可),登录后Power BI会自动生成会话令牌,你的应用不需要参与任何认证流程。 - 嵌入URL获取方式
在Power BI服务中打开目标报表,点击"文件"→"嵌入报表"→"嵌入到组织",复制生成的嵌入URL即可(不要选"发布到Web",后者是公共访问,无法关联用户权限)。
内容的提问来源于stack exchange,提问作者Hua Deng
相关产品推荐
相关产品推荐

