我正在尝试制作zoom oauth2.0应用。为了做到这一点,我正在做一个访问zoom api的后端路由。我试图遵循位于https://marketplace.zoom.us/docs/guides/auth/oauth的步骤1和2,但是在步骤2上遇到了麻烦,步骤2是获取令牌的邮寄请求。这是我的代码:
router.get('/zoom', auth, async (req, res) => {
if (req.query.code) {
const url = `https://zoom.us/oauth/token?grant_type=authorization_code&code=${req.query.code}&redirect_uri=${CLIENT_HOME_PAGE_URL}`;
const headers = {
'Content-Type': 'application/json',
Authorization:
'Basic clientid:clientsecret'
};
try {
const res = await axios.post(url, null, { headers: headers });
console.log(res);
} catch (err) {
console.error(err.message);
return res.status(500).send('Sever Error');
}
}
res.redirect(
`https://zoom.us/oauth/authorize?response_type=code&client_id=${ZOOM_CLIENT_ID}&redirect_uri=${ZOOM_REDIRECT_URI}`
);
});
至此,我只想打印数据。 ZOOM_REDIRECT_URI
指向'/zoom'
的相同路由,并且clientid:clientsecret
被实际客户端ID和密码的base64string版本所代替。我能够被重定向到https://zoom.us/oauth/authorize,该重定向将我重定向回/zoom
并尝试向URL发出发布请求,但是发布请求失败,状态为403。我的代码有什么问题? / p>
答案 0 :(得分:0)
您可能想尝试使用以请求主体中的表单URL编码形式发送的数据进行POST,这是OAuth标准:
const formData = new URLSearchParams();
formData.append('grant_type', 'authorization_code');
formData.append('code', 'some_code');
formData.append('redirect_uri', 'some_redirect_uri');
const options = {
url: this._configuration.tokenEndpoint,
method: 'POST',
data: formData,
headers: {
'content-type': 'application/x-www-form-urlencoded',
'accept': 'application/json',
},
};
const response = await axios.request(options);
奇怪的是,缩放文档指示带有查询参数的POST-可能是文档问题...