public EmbedService() { m_tokenCredentials = null; m_exportConfig = new ExportConfig(); m_embedConfig = new EmbedConfig(); m_tileEmbedConfig = new TileEmbedConfig(); }
public async Task <bool> EmbedTile() { // Get token credentials for user var getCredentialsResult = await GetTokenCredentials(); if (!getCredentialsResult) { // The error message set in GetTokenCredentials m_tileEmbedConfig.ErrorMessage = m_embedConfig.ErrorMessage; 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_tileEmbedConfig.ErrorMessage = "Workspace has no dashboards."; return(false); } var tiles = await client.Dashboards.GetTilesInGroupAsync(new Guid(WorkspaceId), dashboard.Id); // Get the first tile in the workspace. var tile = tiles.Value.FirstOrDefault(); // Generate Embed Token for a tile. var generateTokenRequestParameters = new GenerateTokenRequest(accessLevel: "view"); var tokenResponse = await client.Tiles.GenerateTokenInGroupAsync(new Guid(WorkspaceId), dashboard.Id, tile.Id, generateTokenRequestParameters); if (tokenResponse == null) { m_tileEmbedConfig.ErrorMessage = "Failed to generate embed token."; return(false); } // Generate Embed Configuration. m_tileEmbedConfig = new TileEmbedConfig() { EmbedToken = tokenResponse, EmbedUrl = tile.EmbedUrl, Id = tile.Id.ToString(), dashboardId = 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); } }