来自Nodejs的电话

时间:2017-04-07 14:32:54

标签: 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_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();
});

1 个答案:

答案 0 :(得分:0)

在我看来,你的问题不在于Node.js,而在于你使用了Sage One的api。这可能是the relevant documentation,可以解决您的问题。

快速浏览一下,您似乎想要发送GET而不是POST,并且您应该在网址中发送这些参数。以下是他们提供的示例网址:

https://www.sageone.com/oauth2/auth?response_type=code&client_id=4b64axxxxxxxxxx00710&redirect_uri=https://myapp.com/auth/callback&安培;范围= full_access

我之前从未使用过Sage One,但这符合我与其他OAuth API的体验。