我正在尝试从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();
});
答案 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的体验。