如何使用 javascript 自动生成嵌入令牌?

How to auto generate embed token using javascript?

我正在使用嵌入式 powerbi。我使用 javascript 成功地将报告嵌入到我的应用程序中。但是我每次都必须手动更新嵌入的令牌。

现在我想从我的代码中调用 rest API,以便令牌自动更新。 如何从我的代码中调用 API 来生成令牌以及如何在令牌即将过期时更新令牌?

我的代码是:

<html>
<head>
  <title>Test</title>
  <script src="/Scripts/powerbi.js"></script>
</head>
<body>



 <div id="captionArea">
    <h1>Power BI Embed test</h1>
  </div>
  <div id="embedContainer" style="height:500px">
  </div>
  <script>
    (function () {
      // Please change these values
      var txtAccessToken = 'H4sIAAAAAA...';
      var txtEmbedUrl =
        'https://app.powerbi.com/reportEmbed?reportId=b21f4f90-e364-4b4c-9281-c5db87cdf3a5&groupId=a4781858-f...';
      var txtEmbedReportId = 'b21f4f90-e364-4b4c-9281-c5db87cdf3a5';
 
      var models = window['powerbi-client'].models;
      var permissions = models.Permissions.All;
      var config = {
        type: 'report',
        tokenType: models.TokenType.Embed,
        accessToken: txtAccessToken,
        embedUrl: txtEmbedUrl,
        id: txtEmbedReportId,
        permissions: permissions,
        settings: {
          filterPaneEnabled: true,
          navContentPaneEnabled: true
        }
      };
 
      var embedContainer = document.getElementById('embedContainer');
      var report = powerbi.embed(embedContainer, config);
    }());
  </script>
</body>
</html>

我解决了。您可以使用 MSAL 或 ADAL 生成访问令牌。我使用 MSAL.js 1.0 和隐式授权流程:https://docs.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-javascript-spa

获得访问令牌后,您可以使用ajax调用REST-API生成嵌入令牌。

你可以关注这个