Forum Discussion

yangty152's avatar
yangty152
Frequent Visitor
4 years ago
Solved

Issue to use Power Query to make a Post API call

I'm trying to follow a tutorial to make an API post call, but I cannot get it work. Can someone please help me check where I get it wrong? I removed the sensitive information but other than that, this is what I have, when I refresh, I recieve error below:

 

let
body = "{""grant_type"":""password"",""resource"":""https://analysis.windows.net/powerbi/api"",""client_id"":"""",""username"":"""",""password"":"""",""client_secret"":""""}",
url = "https://login.microsoftonline.com/common/oauth2/token/",
Data = Web.Contents(
url,
[
Headers=[#"Content-Type" = "application/json; charset=utf-8"],
Content=Text.ToBinary(body)
]
),
response = Json.Document(Data)
in
response

 

  • Anonymous's avatar
    Anonymous
    4 years ago

    Hi yangty152 ,

     

    The error is that the URL(https://login.microsoftonline.com/common/oauth2/token/) you entered only accepts POST, OPTIONS requests. But has received a GET request.

    Refer to the syntax posted in this thread:

     //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;

     

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

2 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi yangty152 ,

     

    The error is that the URL(https://login.microsoftonline.com/common/oauth2/token/) you entered only accepts POST, OPTIONS requests. But has received a GET request.

    Refer to the syntax posted in this thread:

     //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;

     

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