首页 > 解决方案 > 通过 Oauth 请求 Zoom API 的访问令牌 - 错误“缺少授权类型”

问题描述

我正在尝试通过 Oauth 从 Zoom api 接收访问令牌。无论我尝试以什么形式发送正文,'Content-Type': 'application/json' 或 Content-Type:application/x-www-form-urlencoded,它总是出错{原因:'缺少授权类型' ,错误:'invalid_request'}。

var options = {
  method: "POST",
  url: "https://zoom.us/oauth/token",
  body: JSON.stringify({
    grant_type: "authorization_code",
    code: process.env.AUTH_CODE,
  }),
  redirect_uri: "https://zoom.us",
};

var header = {
  headers: {
    Authorization:
      "Basic " +
      Buffer.from(process.env.ID + ":" + process.env.SECRET).toString("base64"),
  },
  "Content-Type": "application/json",
};

var tokCall = () =>
  axios
    .post("https://zoom.us/oauth/token", options, header)
    .then((response) => {
      console.log(response);
    })
    .catch((error) => {
      console.log(error.response);
    });

tokCall();

我相当确定答案在于 Oauth 接收数据的数据类型,或者它在哪里/是否在接收正文。任何建议将不胜感激。

标签: jsonoauthaxioszoom-sdk

解决方案


抛出错误是因为您将数据作为发布请求的主体发送,而您Request Access Token Zoom API希望将它们作为查询参数找到,您可能知道这些查询参数是查询字符串。

参考

https://marketplace.zoom.us/docs/guides/auth/oauth#local-test

链接中的页面图像突出显示 API 调用的查询参数和内容类型要求的使用

改变

var options = {
  method: "POST",
  url: "https://zoom.us/oauth/token",
  body: JSON.stringify({
    grant_type: "authorization_code",
    code: process.env.AUTH_CODE,
  }),
  redirect_uri: "https://zoom.us",
};

var options = {
      method: "POST",
      url: "https://zoom.us/oauth/token",
      params: {
        grant_type: "authorization_code",
        code: process.env.AUTH_CODE,
        redirect_uri: "<must match redirect uri used during the app setup on zoom>"
      },
    };

Content-Type头应设置为,application/x-www-form-urlencoded因为这是缩放 API 本身的要求。

顺便说一句,axios要求您将请求的主体字段/对象命名为数据,并且也不需要JSON.stringify()方法,因为axios会在后台为您执行此操作


推荐阅读