在 Java 应用程序上集成 PowerBI 报告的步骤

Ash*_*ore 6 javascript java powerbi powerbi-embedded

JavaScripts 必需 jquery.js powerbi.js

  1. 生成 AAD 令牌

我假设您已经构建了本机应用程序,并且已经提供了所有必需的 Power BI Access。如果没有,请参考下面的步骤 A 到 C。

我使用了这个链接上提到的步骤。我修改了一下以重复使用令牌直到它过期。只有在过期后,我们才会生成新的令牌 http://community.powerbi.com/t5/Developer/Rest-api-usage -with-Java/mp/58514#M1841 此应用程序将为收到的 REST 调用提供 AAD 令牌

  1. 在需要嵌入报告的应用程序的 JSP 页面上为报告创建 DIV

    div id="reportContainer" class="reportContainer"

  2. 获取 AAD 令牌

对在步骤 1 中开发的应用程序进行 REST 调用获取 AAD 令牌

我的 aadToken 对象有 2 个参数 accessToken 和 expiresAtStr

var aadToken={accessToken:' ',expiresAtStr: ''};

function getAadAccessToken() {
    var deferred = $q.defer();
    $http.get('/MyPowerBIApp/REST/getAadToken/')
        .then(
        function (response) {
            deferred.resolve(response.data);
        },
        function(errResponse){
            console.error('Error while getting Aad Access Token');
            deferred.reject(errResponse);
        }
    );
    return deferred.promise;
}   
Run Code Online (Sandbox Code Playgroud)

从 REST 调用接收 aadToken 后,创建嵌入配置

txtAccessToken 是上面的广告令牌。(aadToken.accessToken) txtEmbedUrl 是需要嵌入的报告。它会像https://app.powerbi.com/reportEmbed?reportId .......

 var config= {
                     type: 'report',
                     tokenType: 0,//1:Embed,0:Aad
                     accessToken: txtAccessToken,
                     embedUrl: txtEmbedUrl,
                     permissions: 7,
                     viewMode: 0,
                     settings: {
                         filterPaneEnabled: false,
                         navContentPaneEnabled: false,
                         useCustomSaveAsDialog: false
                     }
                 };
var $reportContainer = $('#reportContainer'); 
var report = powerbi.embed($reportContainer.get(0), config); 
Run Code Online (Sandbox Code Playgroud)

这会将报告嵌入到 DIV


尝试嵌入时发生的主要错误是生成 AAD 令牌。确保已创建 Azure 应用程序并已授予使用 Power BI API 所需的所有权限

A. 如此处所述创建本机应用程序:https : //docs.microsoft.com/en-us/power-bi/developer/walkthrough-push-data-register-app-with-azure-ad

B. 转到 Azure Active Directory-> 应用程序注册 单击您的应用程序:您在此处看到的应用程序 ID 值是您将用于步骤 1 中提到的 AAD 令牌生成的 clientId 值

请参考以下代码:

AuthenticationResult authResult = authenticationContext.acquireToken(
            resourceId,
            clientId,
            username,
            password,
            null
    ).get();
Run Code Online (Sandbox Code Playgroud)

C. 转到 Azure Active Directory-> 应用注册 -> 设置 -> 所需权限

确保 Power BI 服务 (Power BI) 位于 API 下并提供所有必需的权限。以下是一些权限 查看用户组 查看所有报告 查看所有仪表板(预览)

如果所有这些步骤都完成了,您应该能够将收到的令牌嵌入报告中。请检查并让我知道我是否遗漏了任何步骤,否则这种方法会有任何问题。

还要确保将用于生成 AAD 令牌的用户名具有访问 (MemberOf) 报告所在的 PowerBI 工作区