Quantcast
Channel: All Developer posts
Viewing all articles
Browse latest Browse all 48864

Re: How to embed some Power BI Tiles in a Rails App?

$
0
0

Hi there.

 

I'm not sure to understand your question, most of the things I've done so far are beyond my own comprehension :-)

 

I'm using the "KEY 1" associated with the WorkSpace collection created on Azure portal.

Maybe this will help you.

 

Here's the CLI commands:

 

$ powerbi get-workspaces -c MyWorkspaceCollection -k TheVeryLongKey1IHaveCopiedOnTheAzurePortal123456789=

$ powerbi create-workspace -c MyWorkspaceCollection -k TheVeryLongKey1IHaveCopiedOnTheAzurePortal123456789=

$ powerbi import -c MyWorkspaceCollection -w TheWorkspaceIDIHaveJustCreated54321 -k TheVeryLongKey1IHaveCopiedOnTheAzurePortal123456789= -f ~/Downloads/Retail\ Analysis\ Sample.pbix -n "Retail Analysis Sample"

$ powerbi get-reports -c MyWorkspaceCollection -w TheWorkspaceIDIHaveJustCreated54321 -k TheVeryLongKey1IHaveCopiedOnTheAzurePortal123456789=

In Rails, my controller is:

 

require 'jwt'

class JwtController < ApplicationController

  ACCESSKEY = "TheVeryLongKey1IHaveCopiedOnTheAzurePortal123456789"

  TOKEN1 = {
    "typ" => "JWT",
    "alg" => "HS256",
    "wid" => "TheWorkspaceIDIHaveJustCreated54321",
    "rid" => "TheReportIDIHaveRetreived134679",
    "wcn" => "MyWorkspaceCollection",
    "iss" => "PowerBISDK",
    "ver" => "0.2.0",
    "aud" => "https://analysis.windows.net/powerbi/api",
    "nbf" => Time.now.to_i,
    "exp" => Time.now.to_i + 4 * 3600
  }

  def connect
    @token = JWT.encode TOKEN1, ACCESSKEY, 'HS256'
  end

end

Finally, the view:

<button id="btnView">View Report !</button><div id="divView"><iframe id="ifrTile" width="100%" height="400"></iframe></div><script>
  (function () {
    document.getElementById('btnView').onclick = function() {
      var iframe = document.getElementById('ifrTile');
      iframe.src='https://embedded.powerbi.com/appTokenReportEmbed?reportId=TheReportIDIHaveRetreived134679';
      iframe.onload = function() {
        var msgJson = {
          action: "loadReport",
          accessToken: "<%= @token %>",
          height: 800,
          width: 800
        };
        var msgTxt = JSON.stringify(msgJson);
        iframe.contentWindow.postMessage(msgTxt, "*");
      };
    };
  }());</script>

 

Hope, it will help you or anyone else.

 

Cheers


Viewing all articles
Browse latest Browse all 48864


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>