#vkontakte_api #bash #вконтакте #curl #oauth2
Я хочу написать баш скрипт, который будет взаимодействовать с контактом через апи. Для начала необходимо запрограммировать OAuth2.0 авторизацию. Все казалось бы просто, но проблема в том, что я не могу использовать браузер, так как хочу чтобы мой скрипт работал на юниксовой машине без иксов и без вмешательства пользователя, то есть меня. Исходя из документация сайта вконтакте сначала я должен выполнить GET запрос: https://oauth.vk.com/authorize?client_id=&redirect_uri=https://oauth.vk.com/blank.html&display=mobile&scope=video,audio&response_type=token&v=5.44&revoke=1 Этот запрос выполняется нормально и я получаю страницу для отображения пользователю с формами ввода. На данной странице меня интересует только следующий код: Исходя из документации и этого кода делаю вывод что должен реализовать следующее, то есть отправить пост запрос: https://login.vk.com/?act=login&soft=1&utf8=1 и в качестве параметров передать следующие поля: _origin, ip_h, lg_h, to, email, pass Но этот запрос у меня не работает. Возвращается пустая строка при попытке выполнить через curl и страница с ошибкой, мол неправильный пароль если отправляю запрос через какой-нибудь REST клиент. Была мысль что проблема может быть в том, что я не использую куки, но с их добавлением тоже ничего не изменилось, хотя возможно я что-то сделал не так. Скрипт, который я пытаюсь заставить работать: #!/bin/bash username=$1 password=$2 response=$(curl --cookie-jar vk.txt "https://oauth.vk.com/authorize" --data "client_id= &redirect_uri=https://oauth.vk.com/blank.html&display=mobile&scope=video,audio&response_type=token&v=5.44&revoke=1") echo "response is $response" echo "=================================================================" response=$(curl --request POST --cookie vk.txt "https://login.vk.com/?act=login&soft=1&utf8=1" --data-urlencode "_origin=https://oauth.vk.com&ip_h= &lg_h= &to= &email= &pass= ") echo "response is $response" echo "=================================================================" exit 0 Я пробовал играться с параметрами curl, например, кодировать, раскодировать передаваемые данные запроса. Но в результате получаю одно и то же. Может быть я должен проводить какое-то дополнительное кодирование или шифрование прежде чем выполнять запрос? Если да, то почему curl не выполняет это по умолчанию? Я нашел на просторах статью, где эта задача решалась на питоне и у чувака все работает. Я воспользовался его питоновским кодом, переделав его под третий питон, но он также не работает. Возвращает пустую страницу после ввода логина и пароля, хотя должен возвращать страницу с разрешениями для приложения. Мне кажется, что механизм авторизации претерпел некоторые изменения, в связи с чем код перестал работать. Вот ссылка на ту статью: https://habrahabr.ru/post/143972/ Вообщем вопрос в следующем: как сделать так чтобы всё заработало или что я делаю не так?
Ответы
Ответ 1
А redirect_uri у вас соответствует тому, что вы указали при регистрации приложения? Если нет, то проблема в этом.
Комментариев нет:
Отправить комментарий