-
-
Save ramandeep-singh-1983/0350b22130884ecefdb54f41a92ba232 to your computer and use it in GitHub Desktop.
/// <summary> | |
/// Retrieves the access token required to access the Power BI Pro account data. | |
/// </summary> | |
/// <returns>Access token required to access Power BI reports</returns> | |
/// <response code="200">OK</response> | |
/// <response code="401">Unauthorized</response> | |
// GET: api/reports/accessToken | |
[HttpGet] | |
[Route("api/reports/accessToken")] | |
public async Task<IHttpActionResult> GetAccessToken() | |
{ | |
var accessToken = await GetAccessTokenInternalAsync(); | |
if (accessToken == "") | |
{ | |
return Unauthorized(); | |
} | |
return Ok(accessToken); | |
} | |
/// <summary> | |
/// Retrieves the access token required to access the Power BI Pro account data. | |
/// </summary> | |
/// <returns>Access token required to access Power BI reports or empty string on error.</returns> | |
private async Task<string> GetAccessTokenInternalAsync() | |
{ | |
// Check for existing and valid access token | |
if (powerBiAccessToken != "" && ValidateToken(powerBiAccessToken)) | |
{ | |
return powerBiAccessToken; | |
} | |
// We might need to change the following code for .NET Core in near future. | |
// Refer https://community.powerbi.com/t5/Developer/Embed-Power-BI-dashboard-in-ASP-Net-core/m-p/284314#M8436 | |
try | |
{ | |
// Create a user password credentials. | |
var credential = new UserPasswordCredential(powerBiConfiguration.UserName, powerBiConfiguration.Password); | |
// Authenticate using created credentials | |
var authenticationContext = new AuthenticationContext(powerBiConfiguration.AuthorityUrl); | |
var authenticationResult = await authenticationContext.AcquireTokenAsync(powerBiConfiguration.ResourceUrl, powerBiConfiguration.ClientId, credential); | |
if (authenticationResult == null) | |
{ | |
return ""; | |
} | |
powerBiAccessToken = authenticationResult.AccessToken; | |
return authenticationResult.AccessToken; | |
} | |
catch (Exception e) | |
{ | |
Console.WriteLine("Failed to fetch Power BI access token, exception details: ", e); | |
} | |
return ""; | |
} | |
/// <summary> | |
/// Validates the given access token. | |
/// </summary> | |
/// <param name="token">Access token to be checked for validity (required)</param> | |
/// <returns>True if token is valid, false otherwise.</returns> | |
private bool ValidateToken(string token) | |
{ | |
// Code reference: https://github.com/dream-365/OfficeDev-Samples/blob/master/samples/Office365DevQuickStart/OAuth2-basic/JsonWebTokenValidator.cs | |
bool isValid = true; | |
try | |
{ | |
string stsDiscoveryEndpoint = "https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration"; | |
SecurityToken jwt; | |
ConfigurationManager<OpenIdConnectConfiguration> configManager = | |
new ConfigurationManager<OpenIdConnectConfiguration>(stsDiscoveryEndpoint, | |
new OpenIdConnectConfigurationRetriever()); | |
OpenIdConnectConfiguration config = configManager.GetConfigurationAsync().Result; | |
TokenValidationParameters validationParameters = new TokenValidationParameters | |
{ | |
ValidateAudience = false, | |
ValidateIssuer = false, | |
IssuerSigningKeys = config.SigningKeys, | |
ValidateLifetime = true | |
}; | |
JwtSecurityTokenHandler tokendHandler = new JwtSecurityTokenHandler(); | |
tokendHandler.ValidateToken(token, validationParameters, out jwt); | |
} | |
catch (Exception) // Token invalid/expired | |
{ | |
isValid = false; | |
} | |
return isValid; | |
} |
pbiConfig.AuthorityUrl = "https://login.windows.net/common/oauth2/authorize/"; | |
pbiConfig.ResourceUrl = "https://analysis.windows.net/powerbi/api"; | |
pbiConfig.ApiUrl = "https://api.powerbi.com/"; | |
pbiConfig.ClientId = "Provide application/client ID of the app registered in Azure AD here"; | |
pbiConfig.GroupId = "Provide Power BI workspace/group ID here"; | |
pbiConfig.UserName = "Provide Power BI service (app.powerbi.com) user name here"; | |
pbiConfig.Password = "Provide Power BI service (app.powerbi.com) password here"; |
Is there any other latest way to get the access token via power BI Rest api please
Do you use C#/.NET or JavaScript? There are options in both.
I am using Javascript MSAL library. Kindly advise
Hi ragavanrajan: Please refer below link:
https://github.com/tushar1up1/Powerbi-JavaScript-REST_API
Is there any other latest way to get the access token via power BI Rest api please
Do you use C#/.NET or JavaScript? There are options in both.
Do we have link for C#.net ?
@ramandeep-singh-1983 @selmantayyar can you please give me the link for JAVA REST API if you have already found it ?
I found this URL : https://docs.microsoft.com/en-us/rest/api/power-bi/embed-token/generate-token#generate-an-embed-token-expiring-in-10-minutes
@rrohitesh sorry I don't have access to it anymore.
Is there any other latest way to get the access token via power BI Rest api please