vk-io
vk-io copied to clipboard
[API] Конфликт `token` и `access_token`
При обмене silent_token на access_token в параметры метода передаются поля access_token и token, метод завершается ошибкой, которая говорит что метод можно использовать только с сервисным токеном, хотя мы его передаем при инициализации конструктора.
У меня так и не получилось найти где именно происходит конфликт, но при таком же запросе через axios/адресную строку все нормально.
const api = new API({
token: process.env.SERVICE_TOKEN!
});
// Error 28
// По факту token отсюда не должен менять access_token самого класса API, здесь должна работать только прямая передача access_token
// @ts-ignore Private API
api.auth.exchangeSilentAuthTokenSchema({
token: 'silent_token',
uuid: 'uuid'
});
Как именно выглядит запрос через axios? Возможно проблема из-за использования POST запросов по умолчанию, в браузере же идёт GET :thinking:.
@negezor https://github.com/MrZillaGold/vmoji-importer/blob/master/backend/src/routes/auth/exchangeSilentAuthToken.ts#L18-L28
vk-io делает POST запросы? По доке VK везде GET прописаны.
https://github.com/MrZillaGold/vmoji-importer/blob/master/backend/src/routes/auth/exchangeSilentAuthToken.ts#L18-L28
Если изменить на POST, метод перестанет работать?
Проблема GET запросов заключается в том, что размер URL'а не может превышать 2048 символов. Большинство веб-серверов сразу их фильтрует. Раньше библиотека использовала GET, однако после одного issue пришлось изменить на POST, проблем с размером больше не возникало.
@negezor
С POST все в порядке
Тогда тем более непонятно, потому что запросы идентичные уходят.