Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
3 years ago
Solved

Get token function for API request with dynamic access token

I am trying to integrate an REST API source to power bi, the goal is to have it incrementally refresh, but the operations for the REST API uses dynamic access tokens. So I need to make a post functio...
  • ValtteriN's avatar
    3 years ago

    Hej :),

    Here is a quick summary of steps to take:

    1. Create static connection to your API using "Authorization" header and format it like "Bearer XXXXX" (It seems you have done this already
    2. Create function for like this for querying your token. 

    (I am connecting to to PBI rest API in this example: https://login.microsoftonline.com/{{tenant id}}/oauth2/token)

    Here is an example of this:


    () =>

    let

        body = "grant_type=client_credentials&scope=https://analysis.windows.net/powerbi/api/.default&client_id="&client_id&"&client_secret="&client_secret&"&resource="&resource,

        Data =Json.Document(Web.Contents("https://login.microsoftonline.com/"&tenant_id&"/oauth2/token",[Headers=[#"Content-Type"="application/x-www-form-urlencoded"],Content=Text.ToBinary(body)])),

        access_token = Data[access_token]

    in

        access_token

     

    Code explained:
    1st We define what kind of body our request has 
    2nd connecting to data using web.contents. Here important thing is Headers

    3rd get token


    Note: I am using parameters in my code for sensitive data. I recommend this for added security and dynamic options

    3. Replace your static token used in step 1 with the function name. E.g. DynamicToken()

    Here is an exellent video about this where instead of service principal login (like in my case) they are using username and password: https://youtu.be/N8qYRSqRz84


    I hope this post helps to solve your issue and if it does consider accepting it as a solution and giving the post a thumbs up!

    My LinkedIn: https://www.linkedin.com/in/n%C3%A4ttiahov-00001/