Почтовый запрос на получение токена zoom oauth2.0 приводит к ошибке 403

Я пытаюсь сделать приложение Zoom oauth2.0. Для этого я создаю внутренний маршрут, который обращается к API масштабирования. Я пытаюсь выполнить шаги 1 и 2 по адресу https://marketplace.zoom.us/docs/guides/auth/oauth, но у меня возникли проблемы с шагом 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 заменяется версией base64string фактического идентификатора и секрета клиента. Я могу быть перенаправлен на https://zoom.us/oauth/authorize, который перенаправляет меня обратно на /zoom и пытается отправить запрос на публикацию по URL-адресу, но запрос на публикацию завершается со статусом 403. Что не так с моим кодом?


person Jatong Su    schedule 13.07.2020    source источник
comment
Статус HTTP 403 означает «запрещено», что говорит о том, что проблема связана с аутентификацией. Для OAuth 2.0 см. этот пост, хотя и включает реакцию, проверьте это: stackoverflow.com/questions/54487260/   -  person Bren    schedule 13.07.2020


Ответы (1)


Возможно, вы захотите попробовать POST с данными, отправленными в виде URL-адреса формы, закодированного в теле запроса, что является стандартом 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);

Странно, что документ Zoom указывает POST с параметрами запроса - возможно, это проблема с документацией ...

person Gary Archer    schedule 15.07.2020