Forum Discussion

insoldev's avatar
insoldev
Helper I
8 years ago
Solved

Power BI REST API using postman - generate embed token.

Hello - currently working through trying to get an embed token using the Power BI rest api. I am following the guidance as on this page. https://msdn.microsoft.com/en-us/library/mt784614.aspx.

 

ultimately, I am trying to achieve the outcome of using javascript to host a Power BI report in the new model as per https://community.powerbi.com/t5/Developer/Embedding-without-hard-coding-master-credentials-app-owns-data/m-p/296611#M8734 as per Eric_Zhang suggestion.

 

I am not getting an embed token - I am simply getting this response. Clearly I've missed something - I am using my client secret as the bearer token.

 


  • insoldev wrote:

    Hello - currently working through trying to get an embed token using the Power BI rest api. I am following the guidance as on this page. https://msdn.microsoft.com/en-us/library/mt784614.aspx.

     

    ultimately, I am trying to achieve the outcome of using javascript to host a Power BI report in the new model as per https://community.powerbi.com/t5/Developer/Embedding-without-hard-coding-master-credentials-app-owns-data/m-p/296611#M8734 as per Eric_Zhang suggestion.

     

    I am not getting an embed token - I am simply getting this response. Clearly I've missed something - I am using my client secret as the bearer token.

     

     


    insoldev

    The bearer token requires an access token, not the client secret. You need to follow this link to register a Native app rather than a server-side web app for Power BI Embedded cases and grant sufficient permissions.

     

    Then to get the access token, you can call the POST API in POSTMAN as

    POST /common/oauth2/token HTTP/1.1
    Host: login.windows.net
    Cache-Control: no-cache 
    Content-Type: application/x-www-form-urlencoded
    
    client_id={client id}&grant_type=password&resource=https%3A%2F%2Fanalysis.windows.net%2Fpowerbi%2Fapi&username={your power bi account}&password={your Power BI password}

     

    With the above access_token, you can call the GenerateToken API.

     

    By the way, using POSTMAN is recommended for testing/debug purpose, what would you like in your case?

17 Replies

  • Eric_Zhang's avatar
    Eric_Zhang
    Microsoft Employee

    insoldev wrote:

    Hello - currently working through trying to get an embed token using the Power BI rest api. I am following the guidance as on this page. https://msdn.microsoft.com/en-us/library/mt784614.aspx.

     

    ultimately, I am trying to achieve the outcome of using javascript to host a Power BI report in the new model as per https://community.powerbi.com/t5/Developer/Embedding-without-hard-coding-master-credentials-app-owns-data/m-p/296611#M8734 as per Eric_Zhang suggestion.

     

    I am not getting an embed token - I am simply getting this response. Clearly I've missed something - I am using my client secret as the bearer token.

     

     


    insoldev

    The bearer token requires an access token, not the client secret. You need to follow this link to register a Native app rather than a server-side web app for Power BI Embedded cases and grant sufficient permissions.

     

    Then to get the access token, you can call the POST API in POSTMAN as

    POST /common/oauth2/token HTTP/1.1
    Host: login.windows.net
    Cache-Control: no-cache 
    Content-Type: application/x-www-form-urlencoded
    
    client_id={client id}&grant_type=password&resource=https%3A%2F%2Fanalysis.windows.net%2Fpowerbi%2Fapi&username={your power bi account}&password={your Power BI password}

     

    With the above access_token, you can call the GenerateToken API.

     

    By the way, using POSTMAN is recommended for testing/debug purpose, what would you like in your case?

    • Anonymous's avatar
      Anonymous
      Not applicable

      I am getting this response from Postman:

      "error": "invalid_grant", "error_description": "AADSTS70002: Error validating credentials. AADSTS50126: Invalid username or password\r\nTrace ID: c3c862a5-440b-43ba-a105-7efea28b2800\r\nCorrelation ID: 7df5b009-805a-4738-8c81-b9eca778054a\r\nTimestamp: 2018-10-18 20:14:11Z", "error_codes": [ 70002, 50126 ],

       

      but I know my login/pw are good because if I use the same credentials/client_id with the Python library PyPowerBi (https://github.com/cmberryau/pypowerbi)

       

      I can connect and make API calls, so the problem has to be with the Postman setup:

       

      POST: https://login.microsoftonline.com/common/oauth2/token

       

      BODY:

      grant_type:password

      client_id:{{client_id}}

      resource:https://analysis.windows.net/powerbi/api

      scope:openid

      username:{{username}}

      password:{{password}}

    • Jerry-Tang's avatar
      Jerry-Tang
      Microsoft Employee

      Above solution only mentioned using Master User account to authenticate and get access token, in the request body we need provide username and password, Request URL is https://login.microsoftonline.com/common/oauth2/token. Actually we can use either https://login.microsoftonline.com/common/oauth2/token or https://login.microsoftonline.com/{tenantID}/oauth2/v2.0/token for master user. 

      Note: we need replace "{tenantID}" with cx tenant ID. 

       

      Furthermore, we can also use Service Principal to authenticate and get access token: the request URL can only be https://login.microsoftonline.com/{tenantID}/oauth2/v2.0/token

      In the request body, we need set grant_type as client_credentials, and provide client_id and client_secret. After Create an Azure AD app, we will have Application ID(client_id) and secret. 

       

       

      • Burhan_Jiru's avatar
        Burhan_Jiru
        Frequent Visitor

        Hi jerry,

        I am trying the same in postman. but with this token I am not able to generate embed token in postman.

        sharing response which I am getting when generating access token. can please confirm this is the correct response and you are getting the same.

        If this is the correct response can you please guide me on how to generate embed token in Postman?

         

        thank you 

    • insoldev's avatar
      insoldev
      Helper I

      Thanks for your response - I'm just testing to make sure I have the components working correctly.

      • Yikun's avatar
        Yikun
        New Member

        First I would like to say sorry that I don't have an exact solution about this but I feel like that Whatever I will suggest here it would be helpful or it will work.

         

        Just go through the article REST API in Power BI where all things are described in the wonderful and easy way. Diagrams and video are also available in this article which will help to learn in a more easier way.