PowerBI-JavaScript setAccessToken 不起作用
PowerBI-JavaScript setAccessToken doesn't work
我正在使用 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);
});
}
我可以在控制台上看到 "Update success!!"。但是当我使用 getAccessToken()
时,AccessToken 和以前一样。它没有更新我的 AccessToken!!
请给我一个建议或解决方案来解决这个问题!我将不胜感激。
调用 SetAccessToken 后,您是否真的看到使用旧访问令牌发出的请求?
GetAccessToken 在调用 SetAccessToken 后返回错误结果是 javascript SDK
中的错误
我解决了!您如何在库中的代码中看到,当您设置新的访问令牌时,它会将其发送到服务,但显然不会存储您的令牌:
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 时,它将 return 您首先在配置对象中提供的令牌(如果它是延迟评估的,正如我认为的那样):
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;
};
我正在使用 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);
});
}
我可以在控制台上看到 "Update success!!"。但是当我使用 getAccessToken()
时,AccessToken 和以前一样。它没有更新我的 AccessToken!!
请给我一个建议或解决方案来解决这个问题!我将不胜感激。
调用 SetAccessToken 后,您是否真的看到使用旧访问令牌发出的请求? GetAccessToken 在调用 SetAccessToken 后返回错误结果是 javascript SDK
中的错误我解决了!您如何在库中的代码中看到,当您设置新的访问令牌时,它会将其发送到服务,但显然不会存储您的令牌:
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 时,它将 return 您首先在配置对象中提供的令牌(如果它是延迟评估的,正如我认为的那样):
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;
};