[英]Node.js https.request method using client credentials
我正在尝试使用 https.request 请求访问令牌,但我不断收到以下错误:
"error":"invalid_request","error_description":"缺少授权类型"
在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()
}
任何帮助,将不胜感激!
只是为了结束这个循环,我错过了 header 中的“内容类型”,我认为这导致了“缺少授权类型”错误,因为它无法解析正文。 我还需要在 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()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.