コード例 #1
0
        public static ReportEmbeddingData GetReportEmbeddingDataUsingV2TokenRequest()
        {
            PowerBIClient pbiClient = TokenManager.GetPowerBiClient();

            var report     = pbiClient.Reports.GetReportInGroup(workspaceId, reportId);
            var embedUrl   = report.EmbedUrl;
            var reportName = report.Name;

            // create token request object
            IList <GenerateTokenRequestV2Dataset>         datasetRequests   = new GenerateTokenRequestV2Dataset[] { new GenerateTokenRequestV2Dataset(report.DatasetId) };
            IList <GenerateTokenRequestV2Report>          reportRequests    = new GenerateTokenRequestV2Report[] { new GenerateTokenRequestV2Report(report.Id) };
            IList <GenerateTokenRequestV2TargetWorkspace> workspaceRequests = new GenerateTokenRequestV2TargetWorkspace[] { new GenerateTokenRequestV2TargetWorkspace(workspaceId) };


            GenerateTokenRequestV2 tokenRequest =
                new GenerateTokenRequestV2(datasets: datasetRequests,
                                           reports: reportRequests,
                                           targetWorkspaces: workspaceRequests);


            // call to Power BI Service API and pass GenerateTokenRequest object to generate embed token
            string embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest).Token;

            return(new ReportEmbeddingData {
                reportId = reportId.ToString(),
                reportName = reportName,
                embedUrl = embedUrl,
                accessToken = embedToken
            });
        }
コード例 #2
0
        public async Task <string> GetEmbeddedViewModel(string appWorkspaceId = "")
        {
            var           accessToken      = this.tokenAcquisition.GetAccessTokenForAppAsync(RequiredScopes[0]).Result;
            var           tokenCredentials = new TokenCredentials(accessToken, "Bearer");
            PowerBIClient pbiClient        = new PowerBIClient(new Uri(urlPowerBiServiceApiRoot), tokenCredentials);

            Object viewModel;

            Guid workspaceId      = new Guid(appWorkspaceId);
            var  workspaces       = (await pbiClient.Groups.GetGroupsAsync()).Value;
            var  currentWorkspace = workspaces.First((workspace) => workspace.Id == workspaceId);
            var  datasets         = (await pbiClient.Datasets.GetDatasetsInGroupAsync(workspaceId)).Value;
            var  reports          = (await pbiClient.Reports.GetReportsInGroupAsync(workspaceId)).Value;

            IList <GenerateTokenRequestV2Dataset> datasetRequests = new List <GenerateTokenRequestV2Dataset>();

            foreach (var dataset in datasets)
            {
                datasetRequests.Add(new GenerateTokenRequestV2Dataset(dataset.Id));
            }
            ;

            IList <GenerateTokenRequestV2Report> reportRequests = new List <GenerateTokenRequestV2Report>();

            foreach (var report in reports)
            {
                reportRequests.Add(new GenerateTokenRequestV2Report(report.Id, allowEdit: true));
            }
            ;


            IList <GenerateTokenRequestV2TargetWorkspace> workspaceRequests =
                new GenerateTokenRequestV2TargetWorkspace[] {
                new GenerateTokenRequestV2TargetWorkspace(workspaceId)
            };


            GenerateTokenRequestV2 tokenRequest =
                new GenerateTokenRequestV2(datasets: datasetRequests,
                                           reports: reportRequests,
                                           targetWorkspaces: workspaceRequests);


            // call to Power BI Service API and pass GenerateTokenRequest object to generate embed token
            string embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest).Token;


            viewModel = new
            {
                workspaces       = workspaces,
                currentWorkspace = currentWorkspace.Name,
                datasets         = datasets,
                reports          = reports,
                token            = embedToken
            };

            return(JsonConvert.SerializeObject(viewModel));
        }
コード例 #3
0
        /// <summary>
        /// Generate Embed token and Embed URL
        /// </summary>
        /// <returns></returns>
        public EmbedParams GenerateEmbedParams(string username = null, string role = null)
        {
            // Get report info
            var pbiReport = pbiClient.Reports.GetReportInGroup(workspaceId, reportId);

            // Create list of datasets
            var datasets = new GenerateTokenRequestV2Dataset[] { new GenerateTokenRequestV2Dataset(pbiReport.DatasetId) };

            // Create list of reports
            var reports = new GenerateTokenRequestV2Report[] { new GenerateTokenRequestV2Report(reportId) };

            // Create list of workspaces
            var workspaces = new GenerateTokenRequestV2TargetWorkspace[] { new GenerateTokenRequestV2TargetWorkspace(workspaceId) };

            // Create effective identity for current user
            List <EffectiveIdentity> identities = null;

            if (!string.IsNullOrWhiteSpace(username) || !string.IsNullOrWhiteSpace(role))
            {
                identities = new List <EffectiveIdentity> {
                    new EffectiveIdentity(username: username, roles: new List <string> {
                        role
                    }, datasets: new List <string> {
                        pbiReport.DatasetId
                    })
                };
            }

            // Create a request for getting Embed token
            var tokenRequest = new GenerateTokenRequestV2(datasets: datasets, reports: reports, targetWorkspaces: workspaces, identities: identities);

            // Get Embed token
            var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest);

            // Capture embed parameters
            var embedParams = new EmbedParams
            {
                Id         = pbiReport.Id,
                EmbedUrl   = pbiReport.EmbedUrl,
                Type       = "report",
                EmbedToken = new EmbedToken
                {
                    Token      = embedToken.Token,
                    TokenId    = embedToken.TokenId,
                    Expiration = embedToken.Expiration
                },
                DefaultPage = null
            };

            return(embedParams);
        }
コード例 #4
0
        public static ReportWithDynamicBinding GetReportEmbeddingDataDynamicBinding()
        {
            PowerBIClient pbiClient = TokenManager.GetPowerBiClient();

            var report     = pbiClient.Reports.GetReportInGroup(workspaceId, reportId);
            var embedUrl   = "https://app.powerbi.com/reportEmbed";
            var reportName = report.Name;

            // create token request object
            IList <GenerateTokenRequestV2Dataset> datasetRequests =
                new GenerateTokenRequestV2Dataset[] {
                new GenerateTokenRequestV2Dataset(datasetId.ToString()),
                new GenerateTokenRequestV2Dataset(dataset2Id),
                new GenerateTokenRequestV2Dataset(dataset3Id)
            };

            IList <GenerateTokenRequestV2Report> reportRequests =
                new GenerateTokenRequestV2Report[] {
                new GenerateTokenRequestV2Report(reportId)
            };

            IList <GenerateTokenRequestV2TargetWorkspace> workspaceRequests =
                new GenerateTokenRequestV2TargetWorkspace[] {
                new GenerateTokenRequestV2TargetWorkspace(workspaceId)
            };


            GenerateTokenRequestV2 tokenRequest =
                new GenerateTokenRequestV2(datasets: datasetRequests,
                                           reports: reportRequests,
                                           targetWorkspaces: workspaceRequests);


            // call to Power BI Service API and pass GenerateTokenRequest object to generate embed token
            string embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest).Token;

            return(new ReportWithDynamicBinding {
                reportId = reportId.ToString(),
                reportName = reportName,
                embedUrl = embedUrl,
                embedToken = embedToken,
                dataset1Id = datasetId.ToString(),
                dataset2Id = dataset2Id,
                dataset3Id = dataset3Id
            });
        }
コード例 #5
0
        public static ReportEmbeddingData GetReportEmbeddingDataAllDatasets()
        {
            PowerBIClient pbiClient = TokenManager.GetPowerBiClient(PowerBiPermissionScopes.TenantReadWriteAll);

            var datasets = pbiClient.Datasets.GetDatasetsInGroup(workspaceId);
            IList <GenerateTokenRequestV2Dataset> datasetRequests = new List <GenerateTokenRequestV2Dataset>();

            foreach (var dataset in datasets.Value)
            {
                datasetRequests.Add(new GenerateTokenRequestV2Dataset(dataset.Id));
            }


            var report     = pbiClient.Reports.GetReportInGroup(workspaceId, reportId);
            var embedUrl   = report.EmbedUrl;
            var reportName = report.Name;

            // create token request object
            IList <GenerateTokenRequestV2Report>          reportRequests    = new GenerateTokenRequestV2Report[] { new GenerateTokenRequestV2Report(report.Id) };
            IList <GenerateTokenRequestV2TargetWorkspace> workspaceRequests = new GenerateTokenRequestV2TargetWorkspace[] { new GenerateTokenRequestV2TargetWorkspace(workspaceId) };


            GenerateTokenRequestV2 tokenRequest =
                new GenerateTokenRequestV2(datasets: datasetRequests,
                                           reports: reportRequests,
                                           targetWorkspaces: workspaceRequests);


            // call to Power BI Service API and pass GenerateTokenRequest object to generate embed token
            string embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest).Token;

            return(new ReportEmbeddingData {
                reportId = reportId.ToString(),
                reportName = reportName,
                embedUrl = embedUrl,
                accessToken = embedToken
            });
        }