Авторизация vkontakte на PHP

Ради интереса решил с имитировать авторизацию в vkontakte.ru Много примеров пересмотрел. Но большинство из них уже не рабочие, ибо постоянно меняется принцип. Да и всегда примеры с использованием curl. Я решил на основе сокетов сделать.

Двух этапная авторизация.Обычно авторизация проходит в один этап. Вы вводите логин и пароль и, нажав кнопку, инициируете POST запрос, который обработает сервер.На vkontakte немного посложнее. Первый этап.Имитация POST запроса формы. Посылаем серверу логин и пароль(заметьте, что запрос идёт к login.vk.com). В ответе с сервера нам необходимы пара параметров из раздела Set-Cookie.Сам запрос.
$fp = stream_socket_client('tcp://login.vk.com'.':'.$this->port, $err, $errstr, 8, STREAM_CLIENT_CONNECT);if (!$fp) {trigger_error('httpPost error: '.$errstr);return NULL;}else{$posts='act=login&al_frame=1&expire=&captcha_sid=&captcha_key=&from_host=vkontakte.ru&email='.urlencode($this->login).'&pass='.urlencode($this->pass);$query="POST /?act=login HTTP/1.0\r\n"."Host: login.vk.com\r\n"."User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1\r\n"."Accept: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,**;q=0.8\r\n"."Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n"."Accept-Encoding: gzip, deflate\r\n"."Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n"."Referer: http://vkontakte.ru/al_index.php?act=auth_frame\r\n"."Cookie: remixchk=5\r\n"."Connection: close\r\n\r\n";fwrite($fp, $query);}$data = $this->Read($fp);fclose($fp);
В ответе из кукисов надо выцепить remixsid.
$this->remixsid=preg_replace ('/(.*)Set-Cookie: remixsid=(.*); expires(.*)/is', '$2', $data['data']) ;
Теперь можно осуществить какой-нибудь пробный запрос под этим юзером, используя remixsid.

Авторизация vkontakte на PHP: 4 комментария

    1. Suvitruf Автор записи

      Да, не первый раз уже «amp;» вылезает в этом плагине.

      p.s. спасибо)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *