微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在Power Bi中使用访问令牌生成嵌入令牌

如何解决无法在Power Bi中使用访问令牌生成嵌入令牌

我试图了解Power Bi API中的授权机制

我会将报告嵌入到我的网络应用中。

我已经完成了docs

中提到的步骤

实际上,我将获得报告嵌入的URL,然后使用power bi JS API嵌入报告。

成功获得access_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': "https://analysis.windows.net/powerbi/api",'Scope': "https://analysis.windows.net/powerbi/api/.default"
    }
};

现在我尝试获取embedded token for report in group

var data = { accessLevel: "View",datasetId: "5b11d62a-803e-46c9-83f3-*****" };

var config = {
    method: 'post',url: `https://api.powerbi.com/v1.0/myorg/groups/${process.env.GROUP_ID}/reports/${process.env.Report_ID}/Generatetoken`,headers: {
        'Content-Type': 'application/json','Authorization': `Bearer ${JSON.parse(response).access_token}`
    },data: data
};
let embedtoken
try {
    embedtoken = await axios(config)
}
catch (e) {
    console.log(e)
}

context.res = {
    // status: 200,/* Defaults to 200 */
    body: JSON.parse(response).access_token
};

我收到错误400 response

但是当我生成an embed token for dashboard时,我得到一个有效的令牌。但是,当然,这不适用于get report API

我的目标是获取报告信息。有关信息,我可以使用访问令牌获得,但这并不安全

解决方法

对于POST API请求,数据应以字符串格式传递。这可以通过使用JSON.stringify(data)来完成。 请参考下面的代码片段,该错误代码可以解决该错误。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。