You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Power BI Embed Token获取API返回Bad Request问题排查

解决Power BI嵌入令牌生成时的"InvalidRequest"错误

根据你遇到的错误Creating embed token for accessing dataset requires effective identity to be provided,核心问题是生成嵌入令牌时未指定访问数据集的有效身份,以下是具体的排查和修复步骤:

  • 确认嵌入场景并匹配权限类型
    如果你使用的是用户拥有数据(User Owns Data)场景,需使用委托API权限,但必须在生成令牌时传递用户身份;如果是应用拥有数据(App Owns Data)场景,需要将Azure AD应用的权限从委托权限切换为应用权限(比如Report.ReadWrite.All、Dataset.ReadWrite.All),并确保已授予管理员同意。

  • 在代码中添加有效身份配置
    针对数据集的嵌入令牌生成,必须明确指定EffectiveIdentity:

    • 对于User Owns Data场景,需传递当前访问用户的身份信息:
      var effectiveIdentity = new EffectiveIdentity(
          username: "当前用户的邮箱",
          roles: new List<string>(), // 若启用行级安全(RLS),需填写对应角色,否则留空列表
          datasets: new List<string> { "目标数据集ID" }
      );
      
      var embedToken = await pbiClient.EmbedToken.GenerateTokenAsync(
          workspaceId: "工作区ID",
          reportId: "报表ID",
          datasetId: "数据集ID",
          effectiveIdentity: effectiveIdentity,
          permissions: Permissions.All
      );
      
    • 对于App Owns Data场景,直接使用应用身份生成令牌:
      var embedToken = await pbiClient.EmbedToken.GenerateTokenForAppAsync(
          workspaceId: "工作区ID",
          reportId: "报表ID",
          datasetId: "数据集ID",
          permissions: Permissions.All
      );
      
  • 验证工作区权限配置
    确保Azure AD应用(或服务主体)已被添加到目标工作区,且拥有管理员/成员权限,同时确认数据集的权限继承自工作区(未单独限制访问)。

  • 检查GuyInACube代码的适配性
    原代码可能仅针对报表嵌入做了基础配置,未处理数据集关联的场景,需要补充上述EffectiveIdentity或GenerateTokenForAppAsync的相关代码逻辑。

内容的提问来源于stack exchange,提问作者NutellaKing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 21:46:05