node.js - 获取嵌入 PowerBi Angular 8 的正确令牌
问题描述
我正在按照这个示例在 Angular 6 应用程序中嵌入报告。我需要花一些时间才能使其在 Angular 8 上运行。
https://www.c-sharpcorner.com/article/how-to-embed-powerbi-report-in-angular-6/
最后一件事是访问令牌。
为了获得短期令牌,我使用 Postman 和以下端点:
https://login.microsoftonline.com/38efd35e-da65-4e47-8656-876039ad15b1/oauth2/token
其中 38efd35e-da65-4e47-8656-876039ad15b1 是我的 TenantId。
我提供了 App ID 和 client_secret。资源是https://analysis.windows.net/powerbi/api
我能够通过调用生成令牌。
报告 ID 在新工作区中。在访问控制中,将应用 ID 添加为管理员(服务主体)。在代码中,我提供了报告 ID 和组 ID。该应用程序具有 Power Bi 服务的权限。当我使用 Postman 中生成的令牌作为 access_token 时,我在 Angular 控制台中显示 403 错误。
我可能做错了什么?什么不见了?它是错误的承载令牌吗?我应该使用其他东西吗?
MS 没有为该过程提供清晰的分步指南。
最好我想坚持使用 Javascript/typescript 堆栈而不涉及 .NET 或 C#。
解决方案
答案是肯定的,您缺少使用在 Postman 上生成的访问令牌生成嵌入令牌的步骤。您需要使用嵌入令牌,而不是直接使用访问令牌来嵌入您的报告,因为您使用服务主体作为嵌入方法。您还需要提供用于嵌入嵌入配置中的令牌类型,如下所示:
var models = window['powerbi-client'].models;
var config = {
type: 'report',
tokenType: models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedReportId,
settings: {}
};
由于“服务主体”和“主用户”属于“为您的客户嵌入”,因此必须生成嵌入令牌。然而,如果您只想使用访问令牌,您可以使用“为您的组织嵌入”,其中用户(使用专业帐户)需要登录(如果尚未登录)以生成访问令牌。
您可以参考此链接以了解使用 Power BI 进行嵌入。
有两种类型的嵌入,你可以参考这些链接:
推荐阅读
- excel - ISFORMULA 函数条件格式,排除包含特定短语的公式
- sql - 从两个变量生成年龄时,将表达式转换为数据类型的算术溢出错误
- .net - dotnet test 不会递归搜索带有通配符的 .csproj 文件夹
- python - Path('foo').exists() 的缺点!= bool(Path('foo'))
- git - 无法部署到heroku,因为找不到文件
- common-lisp - 在 Common Lisp 中声明约束/多态类型
- scala - 在火花中选择每行的所有非空列名
- python - pytorch 模型中的参数如何不是叶子并且在计算图中?
- dijkstra - 在有向加权图中找到最短循环
- javascript - 在 JavaScript 中剥离部分字符串时哪种方式更快