Power BI Embedded:获取报告详细信息 API 响应 400 错误请求

Power BI Embedded : Get Report details API responds with 400 Bad request

摘要:我正在将 Power BI 报告嵌入到 ISV 应用程序中,当我尝试调用 api 端点以获取它响应的报告的嵌入详细信息时与 400 Bad Request 。我在不使用 SDK 的情况下直接调用 Power BI APIs,因为微软尚未正式发布基于 Java 的应用程序的 PowerBI SDK。此外,为了进行调试,我使用了另一个 .net 应用程序,该应用程序使用 PowerBI SDK 对同一工作区进行相同的 API 调用并且它可以正常工作。

所有其他 API 端点,如 'list all workspaces'、'get workspace details'、“列出工作区中的所有仪表板”,甚至 'list all reports in workspace' 都按要求毫无问题地响应,但API 此处列出的端点:

Power BI get report embedding details using 'workspace_id' and 'report_id'

使用看似正确的凭据和请求以 400 错误请求响应。

接口应用程序上下文:

  1. ISV 应用程序基于 Spring 启动框架 (Java) 和 Angular 2 框架构建。
  2. 目前,我找不到基于 Java 的应用程序的官方 Microsoft Power BI SDK,因此我直接从 Power BI API reference doc[=67= 引用 APIs ]
  3. ISV 应用程序具有访问此处列出的 API 的所有必要权限: https://docs.microsoft.com/en-us/power-bi/developer/power-bi-permissions
  4. 应用程序能够为应用程序中使用的所有其他 api 端点生成令牌、发出经过身份验证的请求并从 power bi 获得响应。

问题和调试

调试中:

  1. 这是 PowerBI .NET SDK 发出的请求,它对获取报告有效 API :

GET https://api.powerbi.com/v1.0/myorg/groups/d864b33b-74dd-4683-9cfd-91c712039147/reports/d618f04d-0b9d-483b-8f9c-cb1210d14595 HTTP/1.1

授权:Bearer auth-token

用户代理:FxVersion/4.7.2117.0 Windows_7_Enterprise/6.1.7601 Microsoft.PowerBI.Api.V2.PowerBIClient/2.0.2.17225

主持人:api.powerbi.com

  1. 这是我的应用程序直接引用 API 端点的请求,其中 returns 400 :

GET https://api.powerbi.com/v1.0/myorg/groups/d864b33b-74dd-4683-9cfd-91c712039147/reports/d618f04d-0b9d-483b-8f9c-cb1210d14595 HTTP/1.1

缓存控制:无缓存

邮递员令牌:一些令牌

授权:Bearer auth-token

用户代理:PostmanRuntime/7.1.1

接受:/

主持人:api.powerbi.com

这是由于 Accept HTTP header。 Microsoft 的 REST 方法不支持它。 尝试:

curl -XGET 
"https://api.powerbi.com/v1.0/myorg/groups/{groupId}/reports/{reportId}" -i -H 
"Authorization: Bearer {token}" -H "Accept:"

-H "Accept:" 将禁用此 HTTP header。 (默认情况下 curl 发送 Accept: * / *