Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
9 years ago
Solved

This content isn't available after calling powered.embed($container, config)

Hello,

 

I am developing an application and am trying to embed Power Bi Premium, I have registeered the app as a Native Application, and used the ClientId to get the proper token.  I have confirmed that I can get the report EmbedConfig info I need to embed the report, including a ReportId, a EmbedUrl, accessToken, ect....

However, when I call the furntion to embed it seems to try to load for a minute, but then just says content isn't available.  The lines of code I am using to embed the report are....


var $reportContainer = $("#reportEmbed");
var report = powerbi.embed($reportContainer.get(0), self.embedConfig);

 

where....

 

embedConfig = {
accessToken: config.EmbedToken.token,
id: config.Id,
embedUrl: config.EmbedUrl

}

What I see in the debugging console is...

 

GET https://wabi-west-us-redirect.analysis.windows.net/metadata/cluster 403 (Forbidden) 

wabi-west-us-redirect.analysis.windows.net/metadata/cluster:1

 

I am now stumped on how to proceed to make my report show up.  Everything I find online about this is in regaurds to the old Power BI Embeded and not the new Premium option.  If anyone can help me understand what I am doing wrong, so that I can get reports to show up correctly, I would be much obliged.


Thanks,

 

Steven

 

  • Anonymous's avatar
    Anonymous
    9 years ago

    Eric_Zhang

     

    Thank you for your response. I was able to get this figured out this mornig.  It seems I was just missing a few properties of the config that you pass to the powerbi.embed function. Now my config looks like.....

     

    self.embedConfig = {
    type: 'report',
    accessToken: config.EmbedToken.token,
    tokenType: pbi.models.TokenType.Embed,
    id: config.Id,
    embedUrl: config.EmbedUrl,
    permissions: pbi.models.Permissions.All,
    settings: {
    filterPaneEnabled: true,
    navContentPaneEnabled: true
    }
    }
     
    WIth the above properties set, the reports started showing up just fine. Thanks for all your help.
     
    Stizz001

2 Replies

  • Eric_Zhang's avatar
    Eric_Zhang
    Icon for Microsoft Employee rankMicrosoft Employee

    Anonymous

    Well, I don't see Embed token mentioned in your post, so guess that you may embed with the access token? The Embed token is generated specifically for individual reports/dashboards/tile with the accesstoken(See GenerateToken).  You can get the GenerateToken by calling the REST API or with Power BI API.

     

    var tokenCredentials = new TokenCredentials(authenticationResult.AccessToken, "Bearer");
    
                // Create a Power BI Client object. It will be used to call Power BI APIs.
                using (var client = new PowerBIClient(new Uri(ApiUrl), tokenCredentials))
                {
                     
                    // Get a list of reports.
                    var reports = await client.Reports.GetReportsInGroupAsync(GroupId);
    
                    // Get the first report in the group.
                    var report = reports.Value.FirstOrDefault();
    
                    if (report == null)
                    {
                        return View(new EmbedConfig()
                        {
                            ErrorMessage = "Group has no reports."
                        });
                    }
    
                    // Generate Embed Token.
                    var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view");
                    var tokenResponse = await client.Reports.GenerateTokenInGroupAsync(GroupId, report.Id, generateTokenRequestParameters);
    
                    if (tokenResponse == null)
                    {
                        return View(new EmbedConfig()
                        {
                            ErrorMessage = "Failed to generate embed token."
                        });
                    }
    
                    // Generate Embed Configuration.
                    var embedConfig = new EmbedConfig()
                    {
                        EmbedToken = tokenResponse,
                        EmbedUrl = report.EmbedUrl,
                        Id = report.Id
                    };
    
                    return View(embedConfig);
                }

    The embed token is a string starting with "H4sIAAAAAAAEA ....". A static html demo attached for your reference.

     

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      Eric_Zhang

       

      Thank you for your response. I was able to get this figured out this mornig.  It seems I was just missing a few properties of the config that you pass to the powerbi.embed function. Now my config looks like.....

       

      self.embedConfig = {
      type: 'report',
      accessToken: config.EmbedToken.token,
      tokenType: pbi.models.TokenType.Embed,
      id: config.Id,
      embedUrl: config.EmbedUrl,
      permissions: pbi.models.Permissions.All,
      settings: {
      filterPaneEnabled: true,
      navContentPaneEnabled: true
      }
      }
       
      WIth the above properties set, the reports started showing up just fine. Thanks for all your help.
       
      Stizz001