Проходим авторизацию в вконтакте

Вот и пришло время, когда мне понадобилось авторизоваться в этой социальной сети. На мое удивление, статей в Интернете было не мало. Даже множество из них были на 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=login&act=login&al_frame=1&captcha_key=&captcha_sid=&
    email=$email&expire=&from_host=vkontakte.ru&pass=$password&q=1");

// Получаем тело документа и одновременно устанавливаем 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 прилагается.