#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
Это объясняет мою проблему. В итоге я изменил логику, чтобы получить токен немедленно, когда пользователь перенаправится обратно на мой сайт.