使用客户端凭据的Node.js https.request方法

编程入门 行业动态 更新时间:2024-10-28 00:24:54

使用客户端<a href=https://www.elefans.com/category/jswz/34/1771297.html style=凭据的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方法

本文发布于:2024-05-07 11:14:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1755983.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:凭据   客户端   方法   request   js

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!