Я использую встроенный 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>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я решил это. Вы можете использовать MSAL или ADAL для создания маркера доступа. Я использовал MSAL.js 1.0 с неявным потоком предоставления: https://learn.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-javascript-spa
После получения токена доступа вы можете использовать ajax для вызова REST-API для создания токена для встраивания.
Вы можете следить за этим Не удалось загрузить данные ответа при попытке получить токен доступа из Azure с помощью JavaScript