帖子与请求模块一起工作,但不适用于axios

时间:2019-11-21 01:02:18

标签: express request axios auth0

为此花费了我两个小时的时间,想知道新鲜的眼睛是否可以帮忙。

我正在尝试联系auth0以获得管理API的访问令牌。

使用请求模块提供示例代码,效果很好(我已替换了密钥/秘密值):

var request = require("request");

var options = { method: 'POST',
  url: 'https://dev-wedegpdh.auth0.com/oauth/token',
  headers: { 'content-type': 'application/json' },
  body: '{"client_id":"myID","client_secret":"mySecret","audience":"https://dev-wedegpdh.auth0.com/api/v2/","grant_type":"client_credentials"}' };

request(options, function (error, response, body) {
  if (error) throw new Error(error);
  res.json(JSON.parse(response.body).access_token)
});

我将我的ID和Secret存储在.env文件中,因此能够对其进行调整,它也可以正常工作:

var options = { method: 'POST',
    url: 'https://dev-wedegpdh.auth0.com/oauth/token',
    headers: { 'content-type': 'application/json' },
    body: 
      JSON.stringify({
        grant_type: 'client_credentials',
        client_id: process.env.auth0AppKey,
        client_secret: process.env.auth0AppSecret,
        audience: 'https://dev-wedegpdh.auth0.com/api/v2/'})
  }

  request(options, function (error, response, body) {
    if (error) throw new Error(error)
    res.json(JSON.parse(response.body).access_token)
  })

我尝试使用axios发出完全相同的请求,但收到404错误:

let response = await axios.post(
  'https://dev-wedegpdh.auth0.com/api/v2/oauth/token', 
  JSON.stringify({
    grant_type: 'client_credentials',
    client_id: process.env.auth0AppKey,
    client_secret: process.env.auth0AppSecret,
    audience: 'https://dev-wedegpdh.auth0.com/api/v2/'
  }),
  { 
    headers: {'content-type': 'application/json'},
  }
)

我已经尝试了几种不同的邮政功能格式或配置,包括那些发现的格式或配置 herehere等。

有人知道我在做什么错吗?

1 个答案:

答案 0 :(得分:2)

在axios帖子正文中,您需要将数据作为JSON发送,而无需使用JSON.stringify。

let response = await axios.post(
  "https://dev-wedegpdh.auth0.com/api/v2/oauth/token",
  {
    grant_type: "client_credentials",
    client_id: process.env.auth0AppKey,
    client_secret: process.env.auth0AppSecret,
    audience: "https://dev-wedegpdh.auth0.com/api/v2/"
  },
  {
    headers: { "content-type": "application/json" }
  }
);