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));
        }
Пример #2
0
        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);
            }
        }