0

我正在尝试从 MYOB 获取访问令牌。我进行的 POST 调用返回“400 Bad Request 错误”我正在使用“axios”进行 POST 调用我已经获得了我在 POST 调用中发送的数据中使用的访问代码

这是我的代码

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)
                    }
        )
4

1 回答 1

0

默认情况下,Axios 会尝试将您的data字段发布为不正确的 JSON。

相反,您希望对它们进行 url 编码并将 url 编码的字符串发布到 HTTP 正文中。请参阅文档中的“示例调用” 。

这里有一个很好的例子来说明如何使用 axios 进行 url 编码。

我还注意到您的redirect_uri字段已经是 url 编码的,因此尝试简单地对其进行第二次编码意味着您最终会http%253A%252F%252Flocalhost得到不正确的东西。根据示例调用仔细检查您的 URL 编码,以确保您不会意外地对某些字段进行两次编码。从内存中访问代码已经正确编码,因此您可能需要在重新编码之前对其进行解码以使其正常工作。

于 2019-11-29T23:38:53.320 回答