我正在尝试通过PowerBI的api从PowerBI检索仪表板和报表列表。在我的
previous post
我对API的连接有问题。我修好了。
我使用的是微软最新的PowerBI软件包。
if (await CreatePowerBIClient())
{
var dashboards = await client.Dashboards.GetDashboardsInGroupAsync(new Guid(SettingsModels.GroupId));
var reports = await client.Reports.GetReportsInGroupAsync(new Guid(SettingsModels.GroupId));
// doing something else with the list
}
我抓住了
groupId
从URL
我得到的是一个错误
Microsoft.Rest.HttpOperationException:操作返回无效的状态代码“NotFound”
另外,我还尝试从
GitHub
但经过快速设置,我得到了一个类似的错误。我运行的项目是DotNetCorePaaS。
在Active Directory中,为Power BI服务启用API权限。
获取仪表板和报表的正确方法是什么?
更新
另外,我在网上读了这篇文章
Microsoft documentation,
但我没有“工作区访问”选项。以下图片来自Microsoft文档:
DotNetCorePaaS
结果我也遇到了同样的情况。另外,我试着看了组的列表,结果是没有组。
string groupEndPoint = $"https://api.powerbi.com/v1.0/myorg/groups";
HttpResponseMessage groupApiResponse = embedTokenClient.GetAsync(groupEndPoint).Result;
if (groupApiResponse.StatusCode == HttpStatusCode.OK)
{
string groupContent = groupApiResponse.Content.ReadAsStringAsync().Result;
JObject groupResponse = JsonConvert.DeserializeObject(groupContent) as JObject;
}
如果从Microsoft文档中运行相同的查询,则会得到结果。
https://api.powerbi.com/v1.0/myorg/groups/04639c90-832b-4d25-8852-eb5d14313f8d/reports/ddfb8877-932e-48d0-9f69-f96e5236504b
如果我用PowerBI检查这个URL是相似的,或者至少
WorkspaceId
ReportId
都是一样的
https://app.powerbi.com/groups/04639c90-832b-4d25-8852-eb5d14313f8d/reports/ddfb8877-932e-48d0-9f69-f96e5236504b/ReportSection
var rsp = await client.Reports.GetReportAsync(
new Guid("ddfb8877-932e-48d0-9f69-f96e5236504b"));
在这种情况下,我收到
Forbidden
错误。
cid
,groupId和reportId是我所期望的。
https://app.powerbi.com/groups/04639c90-832b-4d25-8852-eb5d14313f8d/reports/ddfb8877-932e-48d0-9f69-f96e5236504b?ctid=0306b564-e855-4e8a-ad57-2cf9b2b3c830
注意:在此注册的应用程序不能用作服务主体。了解如何注册服务主体
如果启用服务主体与Power BI一起使用,那么Azure Active Directory权限将不再生效。权限通过Power BI管理门户进行管理。
此过程在Active Directory中创建了一个新的应用程序。我正在使用此应用程序设置服务主体。我可以这样做,还是我必须创建一个新的应用程序?
在PowerBI中,我创建了一个新的工作区。有了这个,我可以设定
Workspace access