Forum Discussion

akashgera's avatar
akashgera
Helper I
5 years ago

Pull data from web service using POST method

Hello Folks,

I am fetching data from web service using POST method and using OAuth 2.0 authentication , which will generate access token using power query, after applying the query, I am getting an error: Invalid Client , I am passing client_secret, client_id & refresh token as per API docs in the content option, but getting an unexpected error:

let
url="https://accounts.zoho.com/oauth/v2/token",
contents=[#"refresh_token"="1000.1affXXXXXXXXXXXXXX"&
"client_id"="1000.WRXXXXXXXx"&
"client_secret"="10f6aaXXXXXXXXXX"&
"grant_type"="refresh_token"
],
result=Web.Contents(url,[Content=Json.FromValue(contents)]),
Final=Json.Document(result)

in
Final

 

When I pass the above parms in the POSTMAN it is giving me access token as requested, I don't know what is wrong in the above query, Pls help !!

 

Here is the link to the API docs- API Docs

 

Error from Power Bi :

Screenshot from POSTMAN :

 

Anykind of help would be appreciated, Thanks in advance !

ImkeF,TuanPham1999sonet141, Anonymous, v-yingjl  How to get data from a webservice with POST method

Query RestAPI with POST Getting data from API with JSON body

4 Replies

  • mahoneypat's avatar
    mahoneypat
    Microsoft Employee

    Please try this instead.  You need to make a record in your contents step.

     

    = let
    url="https://accounts.zoho.com/oauth/v2/token",
    contents=[refresh_token="1000.1affXXXXXXXXXXXXXX",
    client_id="1000.WRXXXXXXXx",
    client_secret="10f6aaXXXXXXXXXX",
    grant_type="refresh_token"
    ],
    result=Web.Contents(url,[Content=Json.FromValue(contents)]),
    Final=Json.Document(result)

    in
    Final

     

    Pat

    • akashgera's avatar
      akashgera
      Helper I

      Thanks for the response, I've tried with the below query as well, but still getting the same error: invalid_client

      let
      url="https://accounts.zoho.com/oauth/v2/token",
      contents=[refresh_token="1000.1afXXXXXXXXXXXXXX",
      client_id="1000.WXXXXXXXXXXXXXXXX",
      client_secret="10fXXXXXXXXXXXX",
      grant_type="refresh_token"
      ],
      result=Web.Contents(url,[Content=Json.FromValue(contents)]),
      Final=Json.Document(result)

      in
      Final

       

      • mahoneypat's avatar
        mahoneypat
        Microsoft Employee

        Not sure what the issue is but you can just hard code the whole url like this.  I saw the redirecturi in the documentation and see that you didn't have it (not sure if needed or not).  If this works, but you then have scheduled refresh issue, you can use the RelativePath and/or query paramters of Web.Contents.

         

        let
        url="https://accounts.zoho.com/oauth/v2/token",
        refreshtoken="1000.1affXXXXXXXXXXXXXX",
        clientid="1000.WRXXXXXXXx",
        clientsecret="10f6aaXXXXXXXXXX",
        granttype="refresh_token",
        redirecturi = "????",
        finalurl = "https://accounts.zoho.com/oauth/v2/token?refresh_token=" & refreshtoken & "&client_id=" & clientid & "&client_secret=" & clientsecret & "&redirect_uri=" & redirecturi & "&grant_type=" & granttype,
        result=Web.Contents(finalurl),
        Final=Json.Document(result)

        in
        Final

         

        Pat