Forum Discussion

KEMKEM's avatar
KEMKEM
Regular Visitor
2 years ago

How to use the Power Bi Rest Api without the refreshtoken?

I have a powershell script which is using the Power Bi Rest Api. For the authentication they use some strange solution. They capture the refresh token from the browser and save it in a txt file. Than there is some algoritme which gets a token by the refresh token in the txt file. I dont like this ugly solution.

 

How can I use the Power Bi Rest Api without this ugly refreshtoken solution? I would like to run this script in an Azure function.

 

I would for example run this rest api:

 

 

https://api.powerbi.com/v1.0/myorg/groups/{groupId}/dataflows/{dataflowId}/transactions

 

 

5 Replies

  • Ask for a bog standard auth token each time before your API call.  You need to have an app registered with the required scope, client secret etc.

    • KEMKEM's avatar
      KEMKEM
      Regular Visitor

      Hi lbendlin  Do you have more info? Maybe some link to a tutorial or blog? Or some code snipped?

      • lbendlin's avatar
        lbendlin
        Super User

        for example

         

        # Calls the Active Directory Authentication Library (ADAL) to authenticate against AAD
        function GetAuthToken
        {
            if(-not (Get-Module AzureRm.Profile)) {
                Import-Module AzureRm.Profile
            }
            $clientId = "xxx"
            $redirectUri = "urn:ietf:wg:oauth:2.0:oob"
            $resourceAppIdURI = "https://analysis.windows.net/powerbi/api"
            $authority = "https://login.microsoftonline.com/common/oauth2/authorize";
            $authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority
            $authResult = $authContext.AcquireToken($resourceAppIdURI, $clientId, $redirectUri, "Auto")
            return $authResult
        }
        
        # Get the auth token from AAD
        $token = GetAuthToken
    • KEMKEM's avatar
      KEMKEM
      Regular Visitor

      I dont understand what you mean. Please share some documentation or code snipped.

      • lbendlin's avatar
        lbendlin
        Super User

        The code I posted will allow you to receive an auth token without any interaction, as often as needed  (I call it before each REST API call). No need for a refresh token. Efficiency be damned.