Как сделать авторизацию через ВК php

Вот и пришло время, когда мне понадобилось авторизоваться в этой социальной сети. На мое удивление, статей в Интернете было не мало. Даже множество из них были на PHP. Отлично! как раз то, что мне нужно. Но внимательно их прочитав, я понял, что те методы авторизации, которые там описывались либо устарели или не работают совсем правильно.

Правда попадались и рабочие примеры (если судить по отзывам). Но все таки захотелось мне написать все с чистого листа, да и к тому же я в свое время написал класс, в который объединил самые часто используемые функции, наверное, самой лучшей библиотеки что я встречал для работы с различными сетевыми протоколами – cURL. На вооружение был принят firebug. Как же без него в таких ситуациях.Ну что понеслась! Вот собственно код с подробными комментариями.

// Подключаем класс curl require_once (‘curl.class.php’); // Данные для входа $email = «ваш емейл»; $password = «ваш пароль»; // Создаем объект curl $curl = new curl; // Инициализируем curl $curl->init(); // Устанавливаем USER_AGENT $curl->set_useragent(«Mozilla/5.0 Gecko/20101203 Firefox/3.6.1»); // Обрабатываем заголовок Location $curl->set_followlocation(1); // Запрещаем вывод данных в браузер $curl->set_returntransfer(1); // Устанавливаем ссылку для первого захода $curl->set_url(‘http://vk.com/’); // Нам необходимо вывести заголовки, // поэтому устанавливаем единицу для вывода головы документа $curl->set_header(1); // Получаем тело документа и одновременно устанавливаем cookies $curl->set_cookie($curl->exec()); // POST запрос будем передавать по этой ссылке $curl->set_url(‘http://login.vk.com/?act=login’); // Собственно сам POST запрос $curl->set_post(«act=loginal_frame=1captcha_sid=expire=pass=$password); // Получаем тело документа и одновременно устанавливаем cookies $curl->set_cookie($curl->exec()); // Указываем реферера $curl->set_referer(‘http://login.vk.com/?act=login’); // Устанавливаем конечную ссылку $curl->set_url(‘http://vk.com/login.php?’); // Отключаем вывод головы документа $curl->set_header(0); // Вополняем echo $curl->exec(); $curl->close();

Еще по теме:  Как сделать магазин в ВК

Вы можете скачать полный исходник. Класс cURL прилагается.

Работа с API Вконтакте с помощью PHP. Регистрация приложения и получение данных

Комментариев: 2

Здравствуйте. Спасибо за статью. Но у меня такая проблема когда я запускаю скрипт я получаю страничку где я авторизован но я остаюсь на localhoste поэтому я не могу идти дальше по ссылка как мне сделать чтобы я при активации скрипта был авторизован непосредственно на вконтакте.

Добрый вечер!
Какая-то странная у вас ситуация. Как вы можете получиться страницу, оставаясь на localhost?

Источник: swblog.ru

Обновленная авторизация Вконтакте (PHP, CURL)

Примерно месяц назад социальная сеть Вконтакте немного изменила алгоритм авторизации, в виду чего скрипты использующие автоматическую авторизацию по средствам curl (впрочем это касается вообще любых скриптов и программ), перестали правильно авторизироваться.

Авторизация и регистрация с сессией на чистом PHP

В рамкам небольшой заметки привожу фрагмент кода обновленной авторизации на PHP.

$mail = «»; //e-mail или логин от контакта $pass = «»; //пароль от контакта $otvet=connect(«http://login.vk.com/?act=loginpass=$pass»); If(!preg_match(«/hash=([a-z0-9])/»,$otvet,$hash)){ die(«Login incorrect»); } $otvet=connect(«http://vk.com/login.php?act=slogin.$hash[1]); preg_match(«/remixsid=(.*?);/»,$otvet,$sid); $cookie = «remixchk=5; remixsid=$sid[1]»; function connect($link,$cookie=null,$post=null){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$link); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 0); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); if($cookie !== null) curl_setopt($ch, CURLOPT_COOKIE, $cookie); if($post !== null) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); } $otvet = curl_exec($ch); curl_close($ch); return $otvet; }?>

Данный фрагмент кода сильно упрощен, но все же наглядно показывает процесс получения недостающего HASH и последующую его передачу в запрос. Результат на выходе Cookie позволяющие дальше работать с ВК будучи уже авторизированным.

CategoryPHP Tagsphp, vk

Похожие записи

  • Скрипт страхования ипотеки с админпанелью(0)
  • Скрипт мессенджера на JS и PHP(0)
  • Чат-комната на сайт [Ajax, PHP](0)
  • Генерация квитанции на оплату в банке(0)
  • Выборка из MySQL с рекурсией, решение на PHP(0)
  • PHP скрипт справочник ОКВЭД, база ОКВЭД (купить, скачать)(0)
  • PHP: Поиск в массиве(0)
Еще по теме:  Сафари Вконтакте что это

4 комментария to “Обновленная авторизация Вконтакте (PHP, CURL)”

Алексей 04.06.2013 в 12:05 пп

Здравствуйте, Роман. Пытаюсь сделать авторизацию по вашему примеру.
После получения куков запрашиваю также функцию connect нужной страницы с указанием вторым параметром переменной $cookie. Но страница ответа всё равно содержит текст о том, что нужно авторизоваться.
Тем более, что смотрю заголовки овтета от Вконтакта, и там кажется remixsid всегда пустой. Как и почти все другие remixs…
В чём может быть ошибка?

Роман Чернышов 04.06.2013 в 12:22 пп

Доброго времени, ВК может не пускать по причинам
— Отличия гео-IP, локации вашего хостинга на котором вы запускаете скрипт и вашего IP с которого вы обычно входите в ВК.
— Проверьте правильно ли скрипт получает параметр $hash

Источник: rche.ru

[PHP] Авторизация vk.com

Chezar вне форума

$ch = curl_init ();
curl_setopt ( $ch , CURLOPT_URL , ‘https://login.vk.com/?act=loginip_h=’ . md5 ( $_SERVER [ REMOTE_ADDR ]). ‘utf8=1’ );
curl_setopt ( $ch , CURLOPT_HEADER , 1 );
curl_setopt ( $ch , CURLOPT_RETURNTRANSFER , 1 );
curl_setopt ( $ch , CURLOPT_USERAGENT , ‘FIREFOX’ );
curl_setopt ( $ch , CURLOPT_SSL_VERIFYPEER , false );
curl_setopt ( $ch , CURLOPT_SSL_VERIFYHOST , false );
curl_setopt ( $ch , CURLOPT_FOLLOWLOCATION , 1 );
curl_setopt ( $ch , CURLOPT_COOKIEJAR , $_SERVER [ ‘DOCUMENT_ROOT’ ]. ‘/test/cookie.txt’ );
curl_setopt ( $ch , CURLOPT_POST , 0 );
curl_setopt ( $ch , CURLOPT_POSTFIELDS , ’email=’ . $mail . ‘

preg_match ( «/hash=([a-z0-9])/» , $res , $hash );
$hash = $hash [ 1 ];

Источник: -avtorizaciya-vk-com-60322/» target=»_blank»]webmasters.ru

Рейтинг
( Пока оценок нет )
Загрузка ...