Невозможно встроить отчет Power BI - PullRequest
0 голосов
/ 14 марта 2019

На портале Azure я зарегистрировал приложение типа «Native».В Java я смог получить токен доступа с помощью этого вызова API

POST https://login.windows.net/common/oauth2/token

Параметры запроса

  1. client_id: appId на лазурном портале
  2. grant_type: "пароль", это жестко записано
  3. ресурс: "https://analysis.windows.net/powerbi/api"
  4. имя пользователя: электронная почта
  5. пароль: пароль электронной почты

Это дает мне accessToken и refreshToken. Я могу использовать этот accessToken для вызова любого из API Power BI. Как получить все отчеты, клонировать отчеты, создавать наборы данных и т. Д.

Теперь я хочу встроитьотправлять отчеты на мою веб-страницу, и я использую этот API-интерфейс с помощью jquery

function embedPBIReport(txtAccessToken, embedUrl, embedReportId, mode) {

        // Read embed URL from textbox
        var txtEmbedUrl = embedUrl;

        // Read report Id from textbox
        var txtEmbedReportId = embedReportId;

        // Get models. models contains enums that can be used.
        var models = window['powerbi-client'].models;

        // We give All permissions to demonstrate switching between View and Edit mode and saving report.
        var permissions = mode == 1 ? models.Permissions.Read : models.Permissions.ReadWrite ;
        var viewMode = mode == 1 ? models.ViewMode.View : models.ViewMode.Edit;
        // Embed configuration used to describe the what and how to embed.
        // This object is used when calling powerbi.embed.
        // This also includes settings and options such as filters.
        // You can find more information at https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embed-Configuration-Details.
        var config = {
            type: 'report',
            tokenType: models.TokenType.Embed,
            accessToken: txtAccessToken,
            embedUrl: txtEmbedUrl,
            id: txtEmbedReportId,
            permissions: permissions,
            viewMode: viewMode,
            settings: {
                filterPaneEnabled: false,
                navContentPaneEnabled: true
            }
        };

        // Get a reference to the embedded report HTML element
        var embedContainer = $('#reportContainer');
        // Embed the report and display it within the div container. --> -->
        var report = embedContainer.powerbi(config);
}

Когда я запускаю встраивание на веб-страницу, он создает Iframe и показывает значок Power BI в качестве загрузчика, а затем выдает эту ошибку

{"message":"LoadReportFailed","detailedMessage":"Get report failed","errorCode":"403","level":6,"technicalDetails":{"requestId":"f62b4819-7cd0-1c6d-1af0-a89050881a8a"}}

Я погуглил эту проблему, и люди говорят, что 403 вызвано тем, что процесс аутентификации неверен. Что я здесь не так делаю?

1 Ответ

1 голос
/ 14 марта 2019

Похоже, вы пытаетесь встроить отчет, указав неверный тип токена.В вашем коде тип токена установлен на Embed:

tokenType: models.TokenType.Embed

Хотя вы никогда не упоминаете, что такое генерируется (например, используя GenerateTokenInGroup ).Таким образом, вы, вероятно, используете токен, полученный во время первоначальной аутентификации.Если вы хотите его использовать, вы должны изменить тип токена на Aad:

tokenType: models.TokenType.Aad

Разница в том, что токен Azure AD предоставляет доступ к данным пользователя, отчетам, панелям мониторинга и плиткам,в то время как встраиваемый токен относится к встроенному элементу.Также токен встраивания имеет более короткий срок действия (~ 5 минут), чем токен AAD (~ 1 час).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...