cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
allan_oliveira
Frequent Visitor

REST API Get Access Token

I'm new to the community and using Power BI.
I would like to make a function that updates a token every 1 hour and returns the new token inside a parameter, is it possible??
Could you help me build this function or share some example?

Thanks

1 ACCEPTED SOLUTION
RicoZhou
Community Support
Community Support

Hi @allan_oliveira 

Before you use Rest API to get access token, you need to registered a client app in Azure AD. Every portal has its url to get access token. The resource url for Power BI API is "https://analysis.windows.net/powerbi/api". Then you need to add parameter into your code body, like your Client ID( from your app) or your account and password.

Here I will show you two ways to get Power BI access token.

1. Get access token by Postman.

1.png

For reference:  Solved: Power BI REST API using postman - generate embed t... - Microsoft Power BI Community

2. Try this code to get access token in visual studio by C#.

For reference: Get an authentication access token

 

using System;
using Microsoft.IdentityModel.Clients.ActiveDirectory;

namespace walkthrough_push_data
{
    class Program
    {
        private static string token = string.Empty;

        static void Main(string[] args)
        {

            //Get an authentication access token
            token = GetToken();

        }

        #region Get an authentication access token
        private static async Task<string> GetToken()
        {
            // TODO: Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.21.301221612
            // and add using Microsoft.IdentityModel.Clients.ActiveDirectory

            //The client id that Azure AD created when you registered your client app.
            string clientID = "{Client_ID}";

            //RedirectUri you used when you register your app.
            //For a client app, a redirect uri gives Azure AD more details on the application that it will authenticate.
            // You can use this redirect uri for your client app
            string redirectUri = "https://login.live.com/oauth20_desktop.srf";

            //Resource Uri for Power BI API
            string resourceUri = "https://analysis.windows.net/powerbi/api";

            //OAuth2 authority Uri
            string authorityUri = "https://login.microsoftonline.com/common/";

            //Get access token:
            // To call a Power BI REST operation, create an instance of AuthenticationContext and call AcquireToken
            // AuthenticationContext is part of the Active Directory Authentication Library NuGet package
            // To install the Active Directory Authentication Library NuGet package in Visual Studio,
            //  run "Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory" from the nuget Package Manager Console.

            // AcquireToken will acquire an Azure access token
            // Call AcquireToken to get an Azure token from Azure Active Directory token issuance endpoint
            AuthenticationContext authContext = new AuthenticationContext(authorityUri);
            var token = authContext.AcquireTokenAsync(resourceUri, clientID, new Uri(redirectUri)).Result.AccessToken;

            Console.WriteLine(token);
            Console.ReadLine();

            return token;
        }

        #endregion

    }
}

 

 

Best Regards,

Rico Zhou

 

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly. 

View solution in original post

8 REPLIES 8
nagarjuna120702
Microsoft
Microsoft

Thanks for sharing the code. My question is, the above solution is using ADAL libraries rather than MSAL for getting the token. Is it ok to use this above code for long run or will this have any impact as Microsoft is going to retire this ADAL authentication in next couple of months. Please help me if you have the code for MSAL based token acquisition. Thank you so much.

RicoZhou
Community Support
Community Support

Hi @allan_oliveira 

Before you use Rest API to get access token, you need to registered a client app in Azure AD. Every portal has its url to get access token. The resource url for Power BI API is "https://analysis.windows.net/powerbi/api". Then you need to add parameter into your code body, like your Client ID( from your app) or your account and password.

Here I will show you two ways to get Power BI access token.

1. Get access token by Postman.

1.png

For reference:  Solved: Power BI REST API using postman - generate embed t... - Microsoft Power BI Community

2. Try this code to get access token in visual studio by C#.

For reference: Get an authentication access token

 

using System;
using Microsoft.IdentityModel.Clients.ActiveDirectory;

namespace walkthrough_push_data
{
    class Program
    {
        private static string token = string.Empty;

        static void Main(string[] args)
        {

            //Get an authentication access token
            token = GetToken();

        }

        #region Get an authentication access token
        private static async Task<string> GetToken()
        {
            // TODO: Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory -Version 2.21.301221612
            // and add using Microsoft.IdentityModel.Clients.ActiveDirectory

            //The client id that Azure AD created when you registered your client app.
            string clientID = "{Client_ID}";

            //RedirectUri you used when you register your app.
            //For a client app, a redirect uri gives Azure AD more details on the application that it will authenticate.
            // You can use this redirect uri for your client app
            string redirectUri = "https://login.live.com/oauth20_desktop.srf";

            //Resource Uri for Power BI API
            string resourceUri = "https://analysis.windows.net/powerbi/api";

            //OAuth2 authority Uri
            string authorityUri = "https://login.microsoftonline.com/common/";

            //Get access token:
            // To call a Power BI REST operation, create an instance of AuthenticationContext and call AcquireToken
            // AuthenticationContext is part of the Active Directory Authentication Library NuGet package
            // To install the Active Directory Authentication Library NuGet package in Visual Studio,
            //  run "Install-Package Microsoft.IdentityModel.Clients.ActiveDirectory" from the nuget Package Manager Console.

            // AcquireToken will acquire an Azure access token
            // Call AcquireToken to get an Azure token from Azure Active Directory token issuance endpoint
            AuthenticationContext authContext = new AuthenticationContext(authorityUri);
            var token = authContext.AcquireTokenAsync(resourceUri, clientID, new Uri(redirectUri)).Result.AccessToken;

            Console.WriteLine(token);
            Console.ReadLine();

            return token;
        }

        #endregion

    }
}

 

 

Best Regards,

Rico Zhou

 

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly. 

Thanks for sharing the code. My question is, the above solution is using ADAL libraries rather than MSAL for getting the token. Is it ok to use this above code for long run or will this have any impact as Microsoft is going to retire this ADAL authentication in next couple of months. Please help me if you have the code for MSAL based token acquisition. Thank you so much.

Can we get a token in power bi desktop? I need to get a token from the government website API. 

hi, I use the same method and get the error message: 

"AADSTS90019: No tenant-identifying information found in either the request or implied by any provided credentials.". what should I do?

Hi @markyang ,

 

You need to specify your tenant_id in your URL, e.g. https://login.microsoftonline.com/{{tenant_id}}/oauth2/v2.0/token. You can find the tenant_id in the Azure Portal > Azure AD > App Registrations > YOUR_APP > Overview.

Hello how I could know application token usage in Power BI?

@RicoZhou, thanks for help!

Helpful resources

Announcements
Carousel_PBI_Wave1

2023 Release Wave 1 Plans

Power BI release plans for 2023 release wave 1 describes all new features releasing from April 2023 through September 2023.

Power BI Summit Carousel 2

Global Power BI Training

Make sure you register today for the Power BI Summit 2023. Don't miss all of the great sessions and speakers!

BizApps LATAM 2023

Business Application LATAM Summit 2023

Join the biggest FREE Business Applications Event in LATAM this February.

Power Platform Bootcamp

Global Power Platform Bootcamp

In this bootcamp we will deep-dive into Microsoft’s Power Platform stack with hands-on sessions and labs, delivered to you by experts and community leaders.