我正在使用 PowerBI-JavaScript 库在我的网站上嵌入信息中心:
var config = {
type: 'dashboard',
tokenType: models.TokenType.Embed,
accessToken: accessToken,
embedUrl: embedUrl,
id: embedDashboardId
};
// Get a reference to the embedded dashboard HTML element
var dashboardContainer = $('#dashboardContainer')[0];
// Embed the dashboard and display it within the div container.
var dashboard = powerbi.embed(dashboardContainer, config);
我想使用setAccessToken
来更新我的AccessToken保持仪表板未过期,所以我在下面创建了函数:
function setToken() {
dashboard.setAccessToken("newtoken")
.then(function (r) {
console.log(r);
console.log("Update success!!")
})
.catch(function (e) {
console.error('Error setting access token', e);
});
}
我可以在控制台上看到“更新成功!!”。但是当我使用getAccessToken()
时,AccessToken与之前相同。它没有更新我的AccessToken !!
请给我一个建议或解决方案来解决这个问题!我将不胜感激。
答案 0 :(得分:0)
在调用SetAccessToken后,您是否真的看到使用旧访问令牌的请求? 调用SetAccessToken后GetAccessToken返回错误的结果是javascript SDK中的错误
答案 1 :(得分:0)
我解决了!你如何看到lib中的代码,当你设置新的访问令牌时,它将它发送给服务,显然不存储你的令牌:
Embed.prototype.setAccessToken = function (accessToken) {
var embedType = this.config.type;
return this.service.hpm.post('/' + embedType + '/token', accessToken, { uid: this.config.uniqueId }, this.iframe.contentWindow)
.then(function (response) {
return response.body;
})
.catch(function (response) {
throw response.body;
});
};
当你调用getAccessToken时,它将返回你在配置对象中首先提供的令牌(如果它是惰性求值的,我认为是这样):
Embed.prototype.getAccessToken = function (globalAccessToken) {
var accessToken = this.config.accessToken || this.element.getAttribute(Embed.accessTokenAttribute) || globalAccessToken;
if (!accessToken) {
throw new Error("No access token was found for element. You must specify an access token directly on the element using attribute '" + Embed.accessTokenAttribute + "' or specify a global token at: powerbi.accessToken.");
}
return accessToken;
};