连接到 Power BI API 时收到“禁止 (403)”

2023-12-02

我们一直在努力追随这篇 Power BI 文章这样我们就可以将报告/仪表板嵌入到我们的 SaaS 产品中。具体来说,我们陷入了第 3 步“创建嵌入令牌”。

我们能够很好地获得不记名令牌,但是当检索报告的请求最终提交给我们收到的 API 时:操作返回无效状态代码“禁止”

    private static string clientId = "...";
    private static string secretKey = "...";
    private static string groupId = "...";

    static void Main(string[] args)
    {
        string resourceUri = "https://analysis.windows.net/powerbi/api";
        string authorityUri = "https://login.windows.net/common/oauth2/authorize";

        ClientCredential credential = new ClientCredential(clientId, secretKey);
        AuthenticationContext authContext = new AuthenticationContext(authorityUri);

        var token = authContext.AcquireTokenAsync(resourceUri, credential).Result.AccessToken;

        var tokenCredentials = new TokenCredentials(token, "Bearer");

        using (var client = new PowerBIClient(new Uri("https://api.powerbi.com/"), tokenCredentials))
        {
            var reports = client.Reports.GetReportsInGroupWithHttpMessagesAsync(groupId);

            // !!! - Here's where the exception is thrown
            // !!! -- Operation returned an invalid status code 'Forbidden'
            var report = reports.Result.Body;
        }
    }

这是我们尝试过的:

  • 所需的权限已被授予(我们已经检查了所有权限以确保我们没有遗漏任何内容)。这包括 Windows Azure Active Directory/Power BI 服务。
  • 我们已确认客户端 ID、密钥和组 ID 正确。
  • Power BI 工作空间是私有的,但我们已尝试创建一个公共工作空间以确保这不会产生影响。
  • 最后,我们通过代码收到的令牌与 powerbi.com 上的令牌相匹配。

您正在使用客户端凭据流来获取 Power BI API 的令牌。目前,Power BI REST API 仅支持委派权限,但不支持任何应用程序权限。因此您的访问令牌无法获得足够的访问权限。要使用 Power BI,身份验证需要基于特定用户。相关主题here and here供您参考。

根据你的document,该场景是应用程序拥有对数据的访问权限。用户不一定是 Power BI 用户,应用程序控制最终用户的身份验证和访问。然后就可以使用资源所有者流程来获取token了。

其示例可在 Controllers\HomeController.cs 中找到应用程序拥有数据示例。

从代码示例中,它使用用户密码凭据(而不是应用程序的凭据)获取令牌:

            // Create a user password cradentials.
            var credential = new UserPasswordCredential(Username, Password);

            // Authenticate using created credentials
            var authenticationContext = new AuthenticationContext(AuthorityUrl);
            var authenticationResult = await authenticationContext.AcquireTokenAsync(ResourceUrl, ClientId, credential);

请参阅对用户进行身份验证并获取 Power BI 应用程序的 Azure AD 访问令牌并检查Access token for non-Power BI users (app owns data)部分 。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

连接到 Power BI API 时收到“禁止 (403)” 的相关文章

随机推荐

  • C# EWS - 已发送电子邮件的标识 - InternetMessageId

    我正在开发一个门票系统 我需要将票证 邮件 发送到电子邮件地址列表 并通过电子邮件接收有关此电子邮件 票证的答复 是否可以从我发送的新票证 电子邮件中获取 InternetMessageId 谢谢你 确保在发送消息时使用SendAndSav
  • 使用python的urllib2和Beautifulsoup爬取维基百科时删除html标签

    我正在尝试抓取维基百科以获取一些用于文本挖掘的数据 我正在使用 python 的 urllib2 和 Beautifulsoup 我的问题是 有没有一种简单的方法可以从我阅读的文本中删除不必要的标签 例如链接 a 或 span 对于这种情况
  • bash -c 变量未分配

    我正在尝试执行以下命令 bash c var test echo var 并且只打印一个空行 如果我执行相同的命令而不bash c var test echo var test 分配给的值 var正在打印 有人可以解释为什么我不能在第一个示
  • 什么是 ScalaSignature?

    将 Scala 文件反编译为 Java 代码时 经常会遇到带有以下注释的类ScalaSignatures 这些似乎只有一个注释值 一个经过某种编码的字符串 为什么 Scala 编译器创建如此奇怪的构造 而不是使用自定义的Attribute是
  • Blackberry 中的“尝试访问安全 API”错误

    当我在 Blackberry 9530 上安装 alx 文件时 收到错误 尝试访问安全 API 但是 我已经成功签署了该应用程序 可能需要 3 种类型的签名 RBB RCR RRT 我不确定它们各自的含义 但您需要使用它们 我认为您可能只安
  • Android:原始资源是否存储在本地文件系统上?

    我正在分析 APK 并在应用程序的 res raw 目录中看到一组 txt 资源 在模拟器上安装应用程序后 我希望在 data data app files 目录中看到相同的文件 但它们似乎不存在 原始资源存储在哪里 原始资源是在应用程序运
  • 在 Spring-boot 中运行 JSF 时出现 NoClassDefFoundError

    我正在尝试使用 primefaces 进行 Spring boot 工作 我按照这个例子https github com Zergleb Spring Boot JSF Example 我尝试将其从 gradle 移至 Maven 因为项目
  • Excel 中用户定义的 IFS 函数的 VBA 代码

    我们公司使用的是Excel 2016的打包版本 而不是Office 365版本 我最近了解到新版本中存在的 IFS 函数 它似乎非常有用 我在网站上以 VBA 形式找到了 CONCATENATEIF 函数 我想知道是否有办法以相同的方式在我
  • 如何将现有项目转换为 angular-cli?

    我刚刚尝试过ng2 admin而且看起来很棒 所有的功能都非常好 我怎样才能将这个项目转换为angular cli 我尝试过ng init 但它覆盖了现有的代码app文件夹 我怎样才能将这个项目转换为angular cli没有任何影响 只需
  • 如何使标准模式和怪异模式一样有效?

    以下 Html 在 FireFox 或 IE7 8 中非常适合我 带或不带样式标签 Should work in Quirks Mode br
  • Java中有计算阶乘的方法吗? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我还没找到 我错过了什么 我知道阶乘方法是初学者的常见示例程序 但是 拥有一个可供重用的标准实现不是很有用吗 我也可以将这种方法与标准类型 例如 int long 以及 BigIntege
  • PHP:MySQL 查询无故重复更新

    下面的代码首先是客户端代码 然后是类文件 由于某种原因 deductTokens 方法调用了两次 从而对帐户收取双倍费用 我整夜都在编程 所以我可能只需要第二双眼睛 if action place order if REQUEST unli
  • 是否可以更改 UITextView 和 UITextField 中单个单词的颜色

    是否可以更改 UITextView 和 UITextField 中单个单词的颜色 如果我输入了一个前面带有符号的单词 例如 word 它的颜色可以更改吗 是的 你需要使用NSAttributedString为此 找到在这里运行应用程序 扫描
  • 如何使用不同的视图进行 django 注册?

    我一直在尝试让 django registration 使用视图 RegistrationFormUniqueEmail 并遵循此解决方案django 注册问题 我已将 urls py 设置为 from django conf urls i
  • 在 mysqli fetch_assoc( ) PHP 中保留换行符

    我尝试使用以下代码从 MySQL 数据库获取所有行 sql SELECT FROM myTable result conn gt query sql while row result gt fetch assoc output row ec
  • Android:获取所有发送的短信? (发件箱)

    我正在编写一个应用程序来备份所有短信 已经研究了一段时间 我刚刚意识到我用来检索短信的方法只能获取我收到的短信 收件箱 是否有可能以任何方式获得发件箱 如果它不在 Android API 中 是否可以通过某种方式从默认短信应用程序获取它 即
  • 如何在 Android 上设置日志文件最大大小

    我正在使用 microlog4android 来记录到文件 问题是如何设置最大文件大小 microlog4android FileAppender 类有两个方法 getLogSize 始终返回 1 和clear 当日志达到一定大小时我可以清
  • 是否可以更改 Wicket 活动指示器的颜色?

    情况 我正在与 Wicket s 合作IndicatingAjaxButton 我在黑色背景的页面上设置了按钮 当用户按下按钮时 按钮的活动指示灯会熄灭并旋转 直到系统准备好继续前进 问题 由于黑色背景 指示器看起来很糟糕 由于指示器的一部
  • 了解 PDF 运算符 - 适用于 iOS 应用程序

    我的任务是为我们公司创建一个 pdf 阅读器应用程序 经过一些研究后 我对 PDF 中的不同运算符感到困惑 我想澄清以下几点 The Tm运算符用作每条线的起点 我的理解正确吗 If the Tm运算符是每行的起点 我如何解析显示的文本on
  • 连接到 Power BI API 时收到“禁止 (403)”

    我们一直在努力追随这篇 Power BI 文章这样我们就可以将报告 仪表板嵌入到我们的 SaaS 产品中 具体来说 我们陷入了第 3 步 创建嵌入令牌 我们能够很好地获得不记名令牌 但是当检索报告的请求最终提交给我们收到的 API 时 操作