You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js调用Zoom API报错TypeError: 无法解构undefined或null的access_token属性

问题原因
  • 你混淆了request-promise(rp)和axios等其他请求库的属性规则,rp的回调返回的响应对象下不存在data属性,Zoom OAuth接口返回的access_token实际存储在回调的第三个参数body中,需要先对body做JSON解析才能提取对应属性。
  • 你没有在rp请求配置中开启resolveWithFullResponse: true,默认场景下rp的promise链返回值直接是响应体内容,而非完整响应对象,同时混用回调+promise链式调用的写法也会导致参数传递逻辑混乱。
  • 即使你在回调中拿到了access_token也没有向外返回,后续then方法中拿到的req实际是未经处理的响应体字符串,无法直接当做token传入后续请求的Authorization头。
修正代码

你可以直接删掉rp的回调参数,全程用promise链式写法处理,修改后的可运行代码如下:

var username = "client id";
var password = "client password";

var options = {
  method: 'POST',
  url: 'https://zoom.us/oauth/token?grant_type=client_credentials',
  headers: {
    Authorization: 'Basic ' + Buffer.from(username + ':' + password).toString('base64'),
    "Content-Type": "application/x-www-form-urlencoded"
  },
  // 自动解析JSON响应,无需手动转换
  json: true
};

const data = {
  "topic": "Demo Meeting",
  "type": 2,
  "start_time": "2020-05-05 12:00:00",
  "password": "Hey123",
  "agenda": "This is the meeting description",
  "settings": {
    "host_video": false,
    "participant_video": false,
    "join_before_host": false,
    "mute_upon_entry": true,
    "use_pmi": false,
    "approval_type": 0
  }
};

function getResponse() {
  return rp(options)
    .then(function (tokenRes) {
      // 直接从解析后的响应体提取access_token
      const { access_token } = tokenRes;
      console.log(access_token)
      return fetch("https://api.zoom.us/v2/users/me/meetings", {
        method: "POST",
        headers: {
          Authorization: `Bearer ${access_token}`,
          "Content-Type": "application/json"
        },
        body: JSON.stringify(data)
      });
    })
    .catch(function (err) {
      console.log('API call failed, reason ', err);
    });
}

内容的提问来源于stack exchange,提问作者Bob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 13:06:02