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