AADSTS90014: Тело запроса должно содержать следующий параметр: 'client_id' - PullRequest
0 голосов
/ 05 сентября 2018

Я использую ADAL.js и PowerBI.js для встраивания отчета Power BI с использованием подхода "Пользователь владеет данными". Для этого я зарегистрировал приложение «Веб-приложение / API» в Azure. Вот код, который я использую:

<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.7.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.35.3/es6-shim.js"></script>
<script src="powerbi.min.js"></script>
<script src="adal.min.js"></script>
<script type="text/javascript">
    (function() {
        "use strict";

        var config = {
            instance: 'https://login.microsoftonline.com/',
            tenant: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // I put my Directory ID here
            clientId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // I put Application ID of my Azure Registered App here
            postLogoutRedirectUri: window.location.origin,
            redirectUri: 'https://login.microsoftonline.com/common/oauth2/authorize',
            resource: 'https://analysis.windows.net/powerbi/api',
            prompt: 'none',
            cacheLocation: 'localStorage',
            embedUrlBase: 'https://app.powerbi.com/reportEmbed',
            groupId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // My Power BI group
            reportId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', // My Power BI report
            response_type:'id_token'
        };

        var authContext = new AuthenticationContext(config);
        var isCallback = authContext.isCallback(window.location.hash);

        authContext.handleWindowCallback();
        if (isCallback && !authContext.getLoginError()) {
            window.location = authContext._getItem(authContext.CONSTANTS.STORAGE.LOGIN_REQUEST);
        }

        var user = authContext.getCachedUser();

        if (!user) {
            authContext.login();
        }

        authContext.acquireToken(config.resource, function(error, token) {
            if (error || !token) {
                alert('ADAL error occurred: ' + error);
                console.log('ADAL error occurred: ' + error);
                return;
            }
            config.authToken = token;

            $(document).ready(function() {
                var models = window['powerbi-client'].models;
                var embedUrl = "https://app.powerbi.com/reportEmbed?reportId="+ config.reportId +"&groupId="+ config.groupId;
                var pbiconfig = {
                    type: 'report',
                    tokenType: models.TokenType.Aad,
                    accessToken: config.authToken,
                    embedUrl: embedUrl,
                    id: config.reportId,
                    pageView: 'fitToWidth'
                };
                var pbiconfigmessage = JSON.stringify(pbiconfig);
                var reportContainer = $('#reportContainer')[0];
                var report = powerbi.embed(reportContainer, pbiconfig);
                var report1 = powerbi.get(reportContainer);
                report1.fullscreen();
            });
        });
    })();
</script>

Когда я пытаюсь запустить этот код, я получаю эту ошибку:

AADSTS90014: тело запроса должно содержать следующий параметр: 'Client_id'

В чем может быть проблема? Как вы видите, я указал правильный идентификатор клиента в моей конфигурации.

Спасибо всем.

1 Ответ

0 голосов
/ 13 сентября 2018

Вы написали clientId. Судя по сообщению об ошибке, поле должно быть записано как client_id.

...