angular - 获取嵌入在 Angular 应用程序中的 Power BI 的嵌入式令牌
问题描述
我想在 Angular 上为 Power BI 生成嵌入式令牌。我目前在一个使用自己版本的 Power BI (xyz.powerbi.com) 并使用 Azure AD 进行身份验证的组织内。
采取的步骤:
向 Azure AD 应用注册添加了 Power BI 服务。授予组织访问权限。
点击身份验证端点以获取访问令牌 - https://login.microsoftonline.com/tenantId/oauth2/token,客户端 ID 和客户端密码以及资源为https://analysis.windows.net/powerbi/ api并获得了访问令牌。
我应该如何使用此访问令牌通过点击 Power Bi 端点来生成嵌入式令牌?
上述方法是生成 Azure AD 访问令牌以访问 Power BI API 的正确方法吗?
嵌入的令牌将进一步用于在应用程序中嵌入 Power BI 报告。
面临的困难: 我尝试通过点击以下 REST api 来生成 Power BI 嵌入式令牌
https://api.powerbi.com/v1.0/myorg/groups/group-id/reports/report-id/GenerateToken
通过在授权选项卡中使用从 Azure AD 生成的访问令牌和https://docs.microsoft.com/en-us/rest/api/power-bi/embedtoken/reports_generatetokeningroup中提到的相应正文
我没有提供(有意的)用户名/密码组合,并且想使用 azure AD 的访问令牌来获得访问权限。
正如预期的那样,我得到了未经授权的 401。我该如何克服这个?
解决方案
/GenerateToken
您收到 401 未经授权的错误,因为您在调用端点时未设置授权(值格式应为“承载 {Azure AD 的访问令牌}”)标头。
确保已在 Azure AD 应用中分配了以下委派权限: Report.ReadWrite.All或Report.Read.All、 Dataset.ReadWrite.All或Dataset.Read.All、 Content.Create。
然后您需要使用以下请求来生成嵌入式令牌:
POST https://api.powerbi.com/v1.0/myorg/groups/{GROUP ID}/reports/{REPORT ID}/GenerateToken
headers = {
Authorization: Bearer {access_token from Azure AD}
Content-Type:application/json; charset=utf-8
Accept:application/json
}
data= {
"accessLevel": "View",
"allowSaveAs": "false"
}
这是示例响应:
{
"@odata.context": "http://wabi-west-us-redirect.analysis.windows.net/v1.0/myorg/groups/{GROUP_ID}/$metadata#Microsoft.PowerBI.ServiceContracts.Api.V1.GenerateTokenResponse",
"token": "H4sIAAAAAAA...",
"tokenId": "...",
"expiration": "yyyy-mm-ddTxx:xxxxx"
}
推荐阅读
- swift - 如何执行无类检查
- python - request.get() 中不遵守超时
- c# - 如何在不使用 ToList 的情况下对 OData 中的字符串集合执行 where 查询?
- angular - 无法读取 Ionic 4 中未定义的属性“socialSharing”
- javascript - 使用 Javascript 透视数据
- android - 从后台打开应用程序后如何保留当前会话
- python - 在 Python 3 中动态生成变量名
- javascript - “.push in array”的未捕获类型错误
- r - 无法添加 git url 以将 Rstudio 中的项目与 git 存储库连接
- controller - 具有更多闪存的控制器是否消耗更多能量