Getting Myob AccountRight API Access token error

278 Views Asked by At

I am trying to get access token from MYOB. The POST call i make returns a "400 Bad Request error" i'm using "axios" to make the POST call i already got the Access code which i use in the data i'm sending in the POST call

here is my code

const config= { headers:{'Content-Type':"application/x-www-form-urlencoded"}}
const data={
         client_id:"xxxxxxxxxxxxxxxxxxxxxxx",
         client_secret:"xxxxxxxxxxxxxxxxxxxxx",
         scope:"CompanyFile",
         code: code,
         redirect_uri:"http%3A%2F%2Flocalhost%3A30002Fcallback",
         grant_type : "authorization_code"
         }

axios.post("https://secure.myob.com/oauth2/v1/authorize", data, config)
  .then((res) =>{
                 console.log ("response ...............", res
                 }
        )
  .catch((error) => {
                 console.error("Error here is ........",error)
                    }
        )
1

There are 1 best solutions below

0
On

Axios will, by default, attempt to POST your data fields as JSON which is not correct.

Instead, you want to url encode them and post the url-encoded string in the HTTP body. See the 'example call' in the docs.

There's a good example of how to url encode w/ axios here.

I also note that your redirect_uri field is already url encoded, so attempting to simply encode it a second time means you'll end up with something like http%253A%252F%252Flocalhost which is not correct. Double check your URL encoding against the example call to make sure you're not accidentally encoding certain fields twice. From memory the access code is already encoded appropriately so you might need to fiddle with decoding it before re-encoding it to get it working.