Node.js 来自Nodejs的Post呼叫

Node.js 来自Nodejs的Post呼叫,node.js,Node.js,我正在尝试从API获取身份验证令牌。 请求应该是这样的 POST /oauth2/token HTTP/1.1 Host: mysageone.ca.sageone.com client_id=4b64axxxxxxxxxx00710& client_secret=iNumzTxxxxxxxxxxhVHstrqWesH8tm9& code=12a0f9c12cxxxxxxxxxxxxxxx92a48cc1f237ead& grant_type=authorization

我正在尝试从API获取身份验证令牌。 请求应该是这样的

POST /oauth2/token HTTP/1.1
Host: mysageone.ca.sageone.com

client_id=4b64axxxxxxxxxx00710&
client_secret=iNumzTxxxxxxxxxxhVHstrqWesH8tm9&
code=12a0f9c12cxxxxxxxxxxxxxxx92a48cc1f237ead&
grant_type=authorization_code&
redirect_uri=https://myapp.com/auth/callback
我当前的代码一直显示我的状态为400。我试图修改标题,但不起作用。我还尝试使用?使所需参数成为路径的一部分

const http = require('http');
    var options = {
      hostname: 'app.sageone.com',
      path: '/oauth2/token',
      method: 'POST',
      headers: {
        "client_id":"xxxxx",
        "client_secret":"xxxxx",
        "code":"xxxxxx",
        "grant_type":"authorization_code",
        "redirect_uri":"https://some link"
        }
    };
    console.log('in users file point 2');
    var req1 = http.request(options, (res1) => {
      console.log('statusCode:', res1.statusCode);
      console.log('headers:', res1.headers);
      console.log('message',res1.statusMessage);
      res1.on('data', (d) => {
        res.json(d);
      });
    });

    req1.on('error', (e) => {
      console.error('error starts here',e);
    });
    req1.end();
});

在我看来,您的问题不在于Node.js,而在于您使用Sage One的api。这可能会解决你的问题

快速浏览一下,看起来您想要发送的是
GET
而不是
POST
,您应该在URL中发送这些参数。以下是他们给出的URL示例:




&范围=完全访问


我以前从未使用过Sage One,但这与我使用其他OAuth API的经验相符。

您的auth API可能需要您通过https调用?如果是这样,您需要的是软件包,而不是
http
软件包。我已经完成了第一步并获得了代码。我试图获取文档中提到的身份验证令牌,但我被卡住了。