public EmbedService() { m_tokenCredentials = null; m_exportConfig = new ExportConfig(); m_embedConfig = new EmbedConfig(); m_tileEmbedConfig = new TileEmbedConfig(); }
public async Task <bool> EmbedDashboard() { // Get token credentials for user var getCredentialsResult = await GetTokenCredentials(); if (!getCredentialsResult) { // The error message set in GetTokenCredentials return(false); } try { // Create a Power BI Client object. It will be used to call Power BI APIs. using (var client = new PowerBIClient(new Uri(ApiUrl), m_tokenCredentials)) { // Get a list of dashboards. var dashboards = await client.Dashboards.GetDashboardsInGroupAsync(new Guid(WorkspaceId)); // Get the first report in the workspace. var dashboard = dashboards.Value.FirstOrDefault(); if (dashboard == null) { m_embedConfig.ErrorMessage = "Workspace has no dashboards."; return(false); } // Generate Embed Token. var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view"); var tokenResponse = await client.Dashboards.GenerateTokenInGroupAsync(new Guid(WorkspaceId), dashboard.Id, generateTokenRequestParameters); if (tokenResponse == null) { m_embedConfig.ErrorMessage = "Failed to generate embed token."; return(false); } // Generate Embed Configuration. m_embedConfig = new EmbedConfig() { EmbedToken = tokenResponse, EmbedUrl = dashboard.EmbedUrl, Id = dashboard.Id.ToString() }; return(true); } } catch (HttpOperationException exc) { m_embedConfig.ErrorMessage = string.Format("Status: {0} ({1})\r\nResponse: {2}\r\nRequestId: {3}", exc.Response.StatusCode, (int)exc.Response.StatusCode, exc.Response.Content, exc.Response.Headers["RequestId"].FirstOrDefault()); return(false); } }