为 Angular 应用程序中嵌入的 Power BI 获取嵌入式令牌
Getting the Embedded Token for Power BI embedded in Angular Application
我想在 Angular 上为 Power BI 生成嵌入式令牌。我目前在一个使用自己版本的 power BI (xyz.powerbi.com) 并使用 Azure AD 进行身份验证的组织中。
已采取的步数:
向 Azure AD 应用程序注册添加了 Power BI 服务。授予组织访问权限。
点击获取访问令牌的身份验证端点 - https://login.microsoftonline.com/tenantId/oauth2/token with the client id and the client secret along with the resource as 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
中提到的适当正文
我没有提供(有意)username/password组合,想使用 azure AD 的访问令牌来获得访问权限。
我收到了预期的 401 未经授权。我该如何克服这个问题??
您收到 401 未授权错误,因为您没有设置授权(值格式应为 "bearer {access token from Azure AD}")header 在调用 /GenerateToken
端点时。
确保您已在 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"
}
虽然访问令牌看起来与下面提到的方式。
我使用 angular 中的 adal 库再次生成了访问令牌,并将访问令牌传递给了嵌入式 Power BI 组件,它成功了。
不需要像官方文档中提到的那样单独生成嵌入令牌。
我想在 Angular 上为 Power BI 生成嵌入式令牌。我目前在一个使用自己版本的 power BI (xyz.powerbi.com) 并使用 Azure AD 进行身份验证的组织中。
已采取的步数:
向 Azure AD 应用程序注册添加了 Power BI 服务。授予组织访问权限。
点击获取访问令牌的身份验证端点 - https://login.microsoftonline.com/tenantId/oauth2/token with the client id and the client secret along with the resource as 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
中提到的适当正文我没有提供(有意)username/password组合,想使用 azure AD 的访问令牌来获得访问权限。
我收到了预期的 401 未经授权。我该如何克服这个问题??
您收到 401 未授权错误,因为您没有设置授权(值格式应为 "bearer {access token from Azure AD}")header 在调用 /GenerateToken
端点时。
确保您已在 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"
}
虽然访问令牌看起来与下面提到的方式。
我使用 angular 中的 adal 库再次生成了访问令牌,并将访问令牌传递给了嵌入式 Power BI 组件,它成功了。
不需要像官方文档中提到的那样单独生成嵌入令牌。