Внедрение отчетов Power BI в C# — запрещено, BadRequestC#

Место общения программистов C#
Ответить
Anonymous
 Внедрение отчетов Power BI в C# — запрещено, BadRequest

Сообщение Anonymous »

Перепробовал множество вариантов решения этой проблемы:

1. создание токена внедрения с эффективным идентификатором не поддерживается для этого источника данных

2. для создания токена внедрения для доступа к набору данных необходимо предоставить действующую идентификацию.
Изображение

Изображение

Код: Выделить всё

public async Task GetReport(Guid reportId, Guid workspaceId, string username)
{
try
{
var pbiClient = await GetPowerBiClientAsync();

var report = await pbiClient.Reports.GetReportInGroupAsync(workspaceId, reportId);

var tokenRequest = new GenerateTokenRequestV2
{
Reports = new List
{
new() { Id = reportId },
},
TargetWorkspaces = new List
{
new() { Id = workspaceId },
},
Datasets = new List
{
new() { Id = report.DatasetId },
},
//Identities = new List
//{
//    new() {
//        Username = username,
//        Roles = new List(),
//        Datasets = new List { report.DatasetId },
//    },
//},
};

var tokenResponse = await pbiClient.EmbedToken.GenerateTokenAsync(tokenRequest);
var embedToken = tokenResponse.Token;

return new EmbeddedReport
{
Id = report.Id.ToString(),
EmbedUrl = report.EmbedUrl,
Name = report.Name,
Token = embedToken,
};
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to get report");
throw new InvalidOperationException($"Failed to get report: {ex.Message}");
}
}

private async Task
 GetPowerBiClientAsync()
{
var token = await GetAccessTokenAsync();
var credentials = new TokenCredentials(token, "Bearer");

return new PowerBIClient(new Uri("https://api.powerbi.com/"), credentials);
}

private async Task GetAccessTokenAsync()
{
try
{
var app = ConfidentialClientApplicationBuilder.Create("")
.WithClientSecret("")
.WithAuthority(new Uri($"https://login.microsoftonline.com/"))
.Build();
var result = await app.AcquireTokenForClient(_scopes).ExecuteAsync();

return result.AccessToken;
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to get token");
return "";
}
}
Применили все необходимые разрешения. Включите субъект-службу и добавьте его в Управление доступом в качестве участника ко всем необходимым отчетам, разрешениям API в azure.portal, Dataset.Read.All, Dataset.ReadWrite.All, Report.Read.All, Report.ReadWrite.All, Workspace.Read.All, Workspace.ReadWrite.All и т. д.
Ваша помощь очень признательна.

Подробнее здесь: https://stackoverflow.com/questions/798 ... badrequest
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»