Forum Discussion

bboy81905's avatar
bboy81905
Frequent Visitor
8 years ago
Solved

PowerBI-JavaScript setAccessToken doesn't work

I'm using PowerBI-JavaScript library to embed the dashboard on my website : var config = { type: 'dashboard', tokenType: models.TokenType.Embed, accessToken: accessToken, ...
  • alexsilvar's avatar
    8 years ago

    Hi bboy81905,

     

    How you can see at the code in the lib, when you set the new access token it send it to the service, and aparently does not store your token:

     

     

    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;
    	        });
    	    };

    And when you call getAccessToken it will return the token wich you provided first in the config object (if it is lazy evaluated, as I think it is):

     

     

    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;
    	    };

    I think you need to change the code at the "setAccessToken" function and add a line like:

     

    this.config.accessToken = accessToken;

    It will probably solve your problem but i dont  think it is the right way to do.