我已经创建了我的应用,并通过https://dev.powerbi.com/Apps注册为本地用户。在Azure中,我添加了自己作为全局管理员用户,将自己注册为应用程序管理员,并授予了所有Power BI API权限。我创建了一个工作区,并为自己添加了一个管理员用户。在我的工作区中上载了Power BI报表。当我在浏览器上时效果很好。
我正在尝试使用ASP.NET 4.61 MVC连接我的报告。我的凭据,用户名和密码有效,因此下面的这段代码没问题:
var credential = new UserPasswordCredential(Username, Password);
// Authenticate using created credentials
var authenticationContext = new AuthenticationContext(AuthorityUrl);
var authenticationResult = await authenticationContext.AcquireTokenAsync(ResourceUrl, ApplicationId, credential);
if (authenticationResult == null)
{
result.ErrorMessage = "Authentication Failed.";
return View(result);
}
var tokenCredentials = new TokenCredentials(authenticationResult.AccessToken, "Bearer");
但是,我收到错误:Status: Unauthorized (401)
在GetReportsInGroupAsync(Workspaceid);
行上,其中workspaceId与我的工作空间匹配。
// Create a Power BI Client object. It will be used to call Power BI APIs.
using (var client = new PowerBIClient(new Uri(ApiUrl), tokenCredentials))
{
// Get a list of reports.
var reports = await client.Reports.GetReportsInGroupAsync(WorkspaceId);
...
}
因此由于未授权错误,我无法从工作区访问报告,因此我无法通过报告。我如何授权自己,我已经在AAD中担任Global Admin,已将自己添加为应用程序所有者,并且在工作区中我已经注册为Admin。
我在下面找到了这个主题,但是答案不能解决我的问题:unauthorized error 401 for power reports embedding
遵循此指南,也没有起作用:https://docs.microsoft.com/en-us/power-bi/developer/register-app
任何帮助将不胜感激。
答案 0 :(得分:2)
我遇到了完全相同的问题,并且检查了API调用的标头X-PowerBI-Error-Info。我发现的是:ServicePrincipalIsNotAllowedByTenantAdminSwitch。
因此,您租户的管理员应打开“允许服务主体与Power BI API一起使用”并将其应用于服务主体所在的安全组: