問題
透過PowerBI-Developer-Samples/AppOwnsData來開啟 PowerBI 報表時,
會出現Creating embed token for accessing dataset ... requires effective identity to be provided
的錯誤
解法
錯誤說明在取得 Token 時,沒有給effective identity,
透過 Power BI Desktop 在 Modeling 功能選 Manage roles ,
可以發現在 Roles 中有一個 User
的值,如下圖,
在 app.powerbi.com 的 workspace 中,查看報表的 dataset ,
按右鍵點選安全性也可以發現在資料列層級安全性中,
有User (0)
,如下圖,
所以在GetEmbedToken程式碼中,
1 | public static EmbedToken GetEmbedToken(PowerBIClient pbiClient, Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId) |
需要建立EffectiveIdentity,並在建立GenerateTokenRequestV2類別時,多指定identities參數,如下,
1 | public static EmbedToken GetEmbedToken(PowerBIClient pbiClient, Guid reportId, IList<Guid> datasetIds, [Optional] Guid targetWorkspaceId) |
註 1: 如果出現
Unauthorized (401) PowerBINotAuthorizedException
,請確定你註冊的 App,是否有加到 PowerBI Workspace 的 管理存取權 之中
註 2: EffectiveIdentity 請依報表設定,如果在不需要 RLS 的報表,就會有
shouldn't have effective identit
的錯誤哦~
註 3: roles 請依系統進行調整
參考資源
Embed a report with RLS
Using RLS in Power BI Embedded
PowerBI-Developer-Samples/AppOwnsData