作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从 PowerBI API 获取数据(使用 Microsoft.PowerBI.Api.V2 客户端 dll)。下面是我的代码:
private static async Task getEmbedTokens(string accessToken)
{
var tokenCredentials = new TokenCredentials(accessToken, "Bearer");
var client = new PowerBIClient(new Uri("https://api.powerbi.com/"), tokenCredentials);
var reports = await client.Reports.GetReportsInGroupAsync("<groupid here>");
// Get the first report in the group.
var report = reports.Value.FirstOrDefault();
if (report != null)
{
var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view");
var tokenResponse = await client.Reports.GenerateTokenInGroupAsync("<group id here>", "<report id here>", generateTokenRequestParameters);
if (tokenResponse != null)
{
// Generate Embed Configuration.
var embedConfig = new EmbedConfig()
{
EmbedToken = tokenResponse,
EmbedUrl = report.EmbedUrl,
Id = report.Id
};
}
}
}
现在我使用 ADAL 生成不记名 token ,并尝试了以下 2 个场景:
场景1:使用UserCredentials(服务帐户)生成不记名 token
这里我使用服务帐户来生成不记名 token 。服务帐户有权访问 powerbi 仪表板。
var credential = new UserPasswordCredential("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="deabadbbacb0bfb3bb9eaabbb0bfb0aab0bfb3bbf0b1b0b3b7bdacb1adb1b8aaf0bdb1b3" rel="noreferrer noopener nofollow">[email protected]</a>", "password");
场景 2:使用 ClientCredentials(服务主体)获取不记名 token
这里我使用客户端 id ,即服务主体的客户端 key 。服务主体已被授予 Azure AD 应用注册面板中 Power BI API 的所有权限。
var clientCred = new ClientCredential(clientId, clientSecret);
场景 1 工作正常,但场景 2 我收到未经授权的错误。我尝试检查是否有任何方法可以通过 power bi 门户授予主体访问仪表板的权限,但找不到任何方法。我更喜欢使用服务主体,但是可以使用服务主体吗?
最佳答案
目前 Power BI 不支持服务主体/仅限应用 token 。
关于azure - PowerBI 客户端不适用于 Azure AD 服务主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49519378/
我是一名优秀的程序员,十分优秀!