public async Task <IActionResult> CsJs([FromServices] PowerBISettings powerBISettings) { var result = new PowerBIEmbedConfig { Username = powerBISettings.UserName }; var accessToken = await GetPowerBIAccessToken(powerBISettings); var tokenCredentials = new TokenCredentials(accessToken, "Bearer"); using (var client = new PowerBIClient(new Uri(powerBISettings.ApiUrl), tokenCredentials)) { var workspaceId = (Guid)powerBISettings.WorkspaceId; var reportId = powerBISettings.ReportId; var report = await client.Reports.GetReportInGroupAsync(workspaceId, reportId); var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view"); var tokenResponse = await client.Reports.GenerateTokenAsync(workspaceId, reportId, generateTokenRequestParameters); result.EmbedToken = tokenResponse; result.EmbedUrl = report.EmbedUrl; result.Id = report.Id.ToString(); } return(View(result)); }
public PowerBIEmbedConfig GetReportAccessToken(PowerBiReportRequest request) { try { var result = new PowerBIEmbedConfig { Username = request.Username }; var accessToken = GetPowerBIAccessToken(request.Username, request.Password); var tokenCredentials = new TokenCredentials(accessToken, "Bearer"); using (var client = new PowerBIClient(new Uri("https://api.powerbi.com/"), tokenCredentials)) { var workspaceId = request.WorkspaceId; var reportId = request.ReportId; var report = client.Reports.GetReportInGroupAsync(workspaceId, reportId).Result; var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view"); var tokenResponse = client.Reports.GenerateTokenAsync(workspaceId, reportId, generateTokenRequestParameters).Result; result.EmbedToken = tokenResponse; result.EmbedUrl = report.EmbedUrl; return(result); } } catch (Exception) { return(null); } }