Я использую 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'
В чем может быть проблема? Как вы видите, я указал правильный идентификатор клиента в моей конфигурации.
Спасибо всем.