Как я получал access token для взаимодействия с vk api


image

Недавно понадобилось сделать программу, которая могла бы работать с vk api на python (по некоторым причинам, использовать модуль vkontakte нельзя) если быть конкретнее, то мне нужно было получить номера телефонов всех моих друзей. Первым делом полез в документацию VK API, немного почитав, увидел, что есть метод friends.get, не требующий access token, создал standalone приложение, дальше построил запрос, чтобы вызвать метод, и вроде всё очень даже хорошо, получил JSON строку со всеми друзьями и некоторой информацией о них, только вот есть одно но, если у пользователя запрещен просмотр страницы в интернете, то информация о его номере телефона будет в строке под видом hidden:1 , что собственно меня не устраивало.

Нужно было получать access token, сформировал ссылку и записал в переменную url, а дальше, используя модуль webbrowser, открываю url и получаю чистое окно, токен есть, только вот он в адресной строке, поискав в гугле о том: «как получить данные из адресной строки на python» и задав вопрос на Stackoverflow и Тостер, понял, что сделать это практически невозможно, и нужно было искать другое решение.

Поскольку получить токен для standalone приложения представляется практически невозможно (по крайней мере для меня, ибо новичок в python`e), я решил создать приложения для сайта, дальше нашел первый попавшийся бесплатный хостинг с поддержкой PHP и зарегистрировал там сайт. Сделал ссылку вида: https://oauth.vk.com/authorize?client_id=APP_ID&scope=PERMISSIONS&redirect_uri=REDIRECT_URI&response_type=code&v=API_VERSION . Открыв ссылку через модуль webbrowser получил главную страницу своего сайта, и в ссылке был параметр code в $_GET, дальше путём нехитрых манипуляций на PHP, записал code в отдельный файл, из которого спарсил его к себе в программу, после чего сформировал ссылку вида
https://oauth.vk.com/access_token?client_id=APP_ID& client_secret=APP_SECRET&code=7a6fa4dff77a228eeda56603b8f53806c883f011c40b72630bb50df056f6479e52a& redirect_uri=REDIRECT_URI , в результате чего, получил JSON строку с нужным мне access token`ом, user_id и expires_in.




К сожалению, не доступен сервер mySQL