Node.js API масштабирования: неверный код авторизации

#node.js #zoom-sdk

Вопрос:

У меня есть приложение, которое я использую для подключения пользователя к Zoom MarketPlace, в соответствии с этим руководством: https://marketplace.zoom.us/docs/guides/auth/oauth

После перенаправления пользователя обратно на мою страницу, и я выполняю установку, все работает нормально. Проблема в том, что когда пользователь нажимает кнопку «Подключиться», перенаправляет обратно на мою страницу с параметром «код» в строке запроса, ждет около 10 минут и только затем пытается установить Zoom на сервере: я получаю следующую ошибку: «ошибка: invalid_request, причина: Неверный код авторизации».
Я не вижу ничего, связанного с каким-либо сроком действия параметра «код» в строке запроса в документации по масштабированию.

Это мой установочный код:

 static install = async ({ code, id }) => {
     const oauthAuth = `Basic ${Buffer
       .from(`${clientId}:${clientSecret}`)
       .toString('base64')}`;
     const redirectUrl = encodeURIComponent(`${url   oauthRedirect}/${id || 'new/zoom'}`);
     const data = `code=${code}amp;grant_type=authorization_codeamp;redirect_uri=${redirectUrl}`;
     const oauthReq = {
       url: oauth,
       method: 'POST',
       headers: {
         Authorization: oauthAuth,
       },
       data,
     };
     try {
       Logger.info(`Zoom called with code: ${code}`);
       const tokens = await sendRequest(oauthReq);
       const {
         access_token: accessToken,
         refresh_token: refreshToken,
         expires_in: expiresIn,
         token_type: tokenType,
         scope,
       } = tokens;
       Logger.info(`Zoom oauth responded from code: ${code}`);
       const accessTokenAuth = `Bearer ${tokens.access_token}`;
       const profileReq = {
         url: api   profile,
         method: 'GET',
         headers: {
           Authorization: accessTokenAuth,
         },
       };
       const profileResp = await sendRequest(profileReq);
       Logger.info(`Zoom profile responded from code: ${code}`);
       const { email, account_id: refId } = profileResp;
       const currentDate = new Date();
       currentDate.setSeconds(currentDate.getSeconds()   expiresIn);
       return {
         accessToken: FeedSourceService.tokenCrypt(accessToken, 'encrypt'),
         email,
         isConnected: true,
         isTokenDirty: false,
         tokenExpiresAt: currentDate,
         profile: profileResp,
         refId,
         refreshToken: FeedSourceService.tokenCrypt(refreshToken, 'encrypt'),
         scope,
         tokenType,
       };
     } catch (e) {
       Logger.error(`Zoom exception, endpoint: ${oauth}, data: ${data} with error: ${e.message}`);
       e.status = 502; // bad gateway
       e.message = 'Error while connect to Zoom';
       throw e;
     }
   }
 

Кто-нибудь может помочь?

Ответ №1:

По словам парня из технической поддержки Zoom API на форуме разработчиков Zoom, он сказал:
«Приношу свои извинения за задержку, срок действия кода авторизации истекает через 5 минут, поэтому вы видите эту проблему после 10-минутной задержки.

Дайте мне знать, если это поможет.

Спасибо, Макс»

https://devforum.zoom.us/t/node-js-zoom-api-invalid-authorization-code/55937/4
Это объясняет мою проблему. В итоге я изменил логику, чтобы получить токен немедленно, когда пользователь перенаправится обратно на мой сайт.