gpt4 book ai didi

azure - 在“我的工作区”中获取仪表板时,Power BI API 返回 403 禁止

转载 作者:行者123 更新时间:2023-12-03 00:58:23 25 4
gpt4 key购买 nike

我会尝试 Power BI API。

所以我首先获取嵌入 token (我正在使用应用程序拥有数据场景)。

1.访问 token

var options = {
'method': 'POST',
'url': `https://login.microsoftonline.com/${process.env.TENANT_ID}/oauth2/token`,
'headers': {
'Content-Type': 'multipart/form-data'
},
formData: {
'grant_type': process.env.GRANT_TYPE,
'client_id': process.env.CLIENT_ID,
'client_secret': process.env.CLIENT_SECRET,
'resource': process.env.RESSOURCE,
'Scope': process.env.SCOPE
}
};

// get Access token from AAD to retrieve Embed Token in PBI API
let response;
try {
response = await new Promise((resolve, reject) => {
request(options, (error, response, data) => {
if (error) reject(error)
else resolve(data)
})
})
}
catch (error) {
context.error(error)
}

2.获取嵌入 token ( Docs )

var data = '{accessLevel:"View"}';

var config = {
method: 'post',
url: `https://api.powerbi.com/v1.0/myorg/groups/${process.env.GROUP_ID}/dashboards/${process.env.DASHBOARD_ID}/GenerateToken`,
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${JSON.parse(response).access_token}`
},
data: data
};

const embedtoken = await axios(config)

context.res = {
// status: 200, /* Defaults to 200 */
body: embedtoken.data
};

<强>3。我已在 azure 上委派权限

enter image description here

我正在获得嵌入 token 。

<强>4。获取仪表板信息

我正在使用 postman 从我在 api 中提到的相同组 ID 和仪表板 ID 获取仪表板信息以获取嵌入 token

(我在授权部分添加该 token )

问题是我收到 403 Forbidden 错误。 enter image description here

PS:在 this post提到了服务主体方法的一些局限性。这是我的问题的根源吗?我必须使用主用户方法吗?

enter image description here

最佳答案

您对嵌入 token 的使用存在误解。它不能用于直接调用 https://api.powerbi.com/v1.0/myorg/groups/{group id}/dashboards/{dashboard id}/。这里需要AAD token 。

要使用嵌入 token ,您应该使用它调用嵌入 URL。

嵌入 URL 的格式如下:

https://app.powerbi.com/reportEmbed?reportId=f6bfd646-b718-44dc-a378-b73e6b528204&groupId=be8908da-da25-452e-b220-163f52476cdd&config=eyJjbHVzdGVyVXJsIjoiaHR0cHM6Ly9XQUJJLVVTLU5PUlRILUNFTlRSQUwtcmVkaXJlY3QuYW5hbHlzaXMud2luZG93cy5uZXQiLCJlbWJlZEZlYXR1cmVzIjp7Im1vZGVybkVtYmVkIjp0cnVlfX0%3d

.net 示例:

// You need to provide the workspaceId where the dashboard resides.
ODataResponseListReport reports = await client.Reports.GetReportsInGroupAsync(workspaceId);

// Get the first report in the group.
Report report = reports.Value.FirstOrDefault();

// Generate Embed Token.
var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view");
EmbedToken tokenResponse = client.Reports.GenerateTokenInGroup(workspaceId, report.Id, generateTokenRequestParameters);

// Generate Embed Configuration.
var embedConfig = new EmbedConfig()
{
EmbedToken = tokenResponse,
EmbedUrl = report.EmbedUrl,
Id = report.Id
};

然后您可以使用 EmbedToken 调用 EmbedUrl

引用here .

关于azure - 在“我的工作区”中获取仪表板时,Power BI API 返回 403 禁止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64200930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com