凭据的Node.js https.request方法"/>
使用客户端凭据的Node.js https.request方法
我正在尝试使用https.request请求访问令牌,但我不断收到以下错误:
“错误”:“无效请求”,“错误说明”:“缺少授予类型”
在Node.js HTTPS.Request文档中,没有关于如何设置授权类型的参考。我相信我需要在请求的正文中设置它,但是也没有引用将正文附加到请求。我正在尝试使用有效负载变量来执行此操作,但是显然这行不通。我也在尝试以0或尽可能少的依赖关系执行此请求。
function getAccessToken() {
const https = require('https')
const payload = {
"grant_type": "client_credentials"
}
const options = {
"hostname": url,
"method": "POST",
"path" : "/oauth2/token",
"port" : 443,
"encoding": "utf8",
"followRedirect": true,
"headers": {
"Authorization": "Basic <base64 encoded client_id:client_secret>",
"scope": "PARTNER_READ"
},
"payload": payload,
'muteHttpExceptions': true
}
const req = https.request(options, res => {
console.log(`statusCode: ${res.statusCode}`)
res.on('data', d => {
process.stdout.write(d)
})
})
req.on('error', error => {
console.error(error)
})
req.end()
}
任何帮助将不胜感激!
回答如下:只是为了结束循环,我在标头中丢失了“ Content-Type”,我认为这是导致“ Missing Grant Type”错误的原因,因为它无法解析正文。我还需要在req.end()之前将postData写入请求。因此,感谢@Klaycon在正确的方向上提出了这一观点!
这是我更新的代码:
function getAccessToken() {
const querystring = require('querystring');
const https = require('https')
const postData = querystring.stringify({
'grant_type': 'client_credentials'
});
const options = {
"hostname": url,
"method": "POST",
"path" : "/oauth2/token",
"port" : 443,
"encoding": "utf8",
"followRedirect": true,
"headers": {
"Authorization": "Basic <base64 encoded client_id:client_secret>",
"Content-Type": 'application/x-www-form-urlencoded',
"Content-Length": Buffer.byteLength(postData),
},
'muteHttpExceptions': true
}
const req = https.request(options, res => {
console.log(`statusCode: ${res.statusCode}`)
res.on('data', d => {
process.stdout.write(d)
})
})
req.on('error', error => {
console.error(error)
})
req.write(postData);
req.end()
}
更多推荐
使用客户端凭据的Node.js https.request方法
发布评论