negezor / vk-io

Modern VK API SDK for Node.js
https://npm.im/vk-io
MIT License
545 stars 86 forks source link

Ошибка при вызове AccountVerification.run() #540

Closed fortune1dev closed 1 year ago

fortune1dev commented 1 year ago

В качестве параметра передаю строку из error.redirectUri при ApipError error.code === 17 (запрос на валидацию).

node_modules\@vk-io\authorization\lib\index.js:242 if (action.startsWith('https://')) { ^ TypeError: Cannot read properties of undefined (reading 'startsWith') at getFullURL (C:\Users\kivan\Source\repos\vkpromouter\node\node_modules\@vk-io\authorization\lib\index.js:242:16) at AccountVerification.processValidateForm (C:\Users\kivan\Source\repos\vkpromouter\node\node_modules\@vk-io\authorization\lib\index.js:1234:21) at AccountVerification.run (C:\Users\kivan\Source\repos\vkpromouter\node\node_modules\@vk-io\authorization\lib\index.js:1139:39)

Не пойму, что я не так делаю. Или баг?

fortune1dev commented 1 year ago

в @vk-io/authorization/lib/index.js строка 1233, меняем const href = $('#activation_wrap a').attr('href'); на const href = $('form a').attr('href');

работает.

negezor commented 1 year ago

Какой HTML селектор в самой форме для ссылки? Лучше если мы будем точно знать.

fortune1dev commented 1 year ago

Какой HTML селектор в самой форме для ссылки? Лучше если мы будем точно знать.

Эм... я не совсем понял вопрос. Вот же я указал в коде, как получаю рабочий селектор: const href = $('form a').attr('href'); т.е. просто "form a", а у вас сейчас "#activation_wrap a". Видимо ВК поменяли HTML-код страницы валидации. Да и вообще, там то URL похож на redirectUri из error.redirectUri. Можно просто замену одного параметра в урле делать и даже не парсить форму. Шанс на его замену ВК, возможно даже ниже, чем на смену HTML, как сейчас случилось. Но это не принципиально, возможно парсинг формы надежнее. Не берусь судить.