Проблема с 2fa
kozyaba opened this issue · 1 comments
Добрый день. Пытаюсь получить токен из примера следующим образом:
php example_microg.php login pass GET_CODE
но в ответ получаю ошибку:
PHP Fatal error: Uncaught Vodka2\VKAudioToken\TokenException: Two factor auth is required.
Не совсем понятно, что делать на этом этапе. Пробовал перейти в браузере по redirect_uri, но вк пишет, что сессия устарела. Что я делаю не так?))
С паролем приложения разумеется проблем нет, но хочется использовать авторизацию по обычному паролю тоже.
@kozyaba Добрый день. По идее должно прийти SMS, но почему-то не приходит. Есть два варианта, как это обойти. Либо перейти по ссылке redirect_uri
, откроется страница с формой, на телефон придёт SMS или будет звонок, вводим код и получаем необновлённый токен, как если бы не было 2FA. Правда, пока что API vk-audio-token не позволяет его обновить, это нужно доработать. Ошибка с устаревшей сессией возникает, думаю, из-за того, что вы уже зашли ВК, нужно либо выйти, либо использовать режим инкогнито.
Второй вариант, вставить в example_microg.php
...
$receiver = new TokenReceiver($login, $pass, $authData, $params, $authCode);
try {
echo $receiver->getToken();
} catch (\Vodka2\VKAudioToken\TokenException $e) {
if ($e->code == \Vodka2\VKAudioToken\TokenException::TWOFA_REQ && isset($e->extra->validation_sid)) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, "https://api.vk.com/method/auth.validatePhone?sid={$e->extra->validation_sid}&v=5.95");
echo curl_exec($ch);
} else {
throw $e;
}
}
После выполнения на телефон приходит SMS с кодом, далее, как раньше php example_microg.php login pass <код из SMS>
. Тоже в идеале нужно внести эти изменения в vk-audio-token.