Народ, подскажите, возможно ли сделать авторизацию Вконтакте не по приложению, а напрямую через логин и пароль. Т.е у меня имеется форма с полями для логина и пароля, и мне нужно авторизоваться и получить имя пользователя. Конечно знаю, что легче сделать через access token и api, но просто ради практики и интереса. Кому не трудно, покажите пример кода?
авторизация вконтакте и где бы то нибыло подразумевает результат. Результат это получение access_token для выполнения авторизованных запросов. Если у вас не будет этого токена, смысла в вашей авторизации 0. Более того просить пользователя ввести свой логин и пароль -запрещенно. Каждый пользователь ознакомлен с тем, что вводить свой пароль и логин где -то кроме офф сайта запрещенно и результатом будет потеря доступа к аккаунту. Когда нельзя, но очень хочется идем и читаем, как в php работать с http заголовкам. Открываем network tab в google chrome и идем авторизуемся в контакте, смотрим что уходит на сервер и что приходит и т.д. Пример такого кода вам никто не покажет. Тем более бесплатно. Бояться не нужно, задача простая, но нудная. Сложнее будет найти идиота, который таки введет у вас свой пароль ))))
Я нашёл что-то подобное из этого ответа можно вывести его? PHP: <? $mail = ""; //e-mail или логин от контакта $pass = ""; //пароль от контакта $otvet=connect("http://login.vk.com/?act=login&email=$mail&pass=$pass"); If(!preg_match("/hash=([a-z0-9]{1,32})/",$otvet,$hash)){ die("Login incorrect"); } $otvet=connect("http://vk.com/login.php?act=slogin&hash=".$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; }?>
во первых там есть другие параметры запроса, как минимум данные сессии должны передаваться. Во вторых пароль в открытом виде никто не передает, вы знаете какой алгоритм шифрования они используют и в каком виде вам нужно его передать? Я нет... эксперементировать будет долго. И из этого запроса токена вы не получите, вы в лучшем случае введя правильный логин и пароль получите заголовок на основании которого нужно выполнить переадресацию. токен вам отдадут если вы отправите запрос на указанный в документации к api url.