Login php vk com что это

от admin

Авторизация на сайте с помощью ВК, простой и понятный способ на PHP!

Я заинтересовался как сделать авторизацию, почитав официальную документацию понял, что ничего не понял. и так давайте приступим.

Если Вы заинтересованы в этом вопросе, как же все-таки сделать авторизацию используя ВК, то у Вас уже есть сайт, или как минимум вы обладаете базовыми знаниями. Для начала нам нужно создать приложение Вконтакте, самый простой шаг.

1. Переходим на сайт https://vk.com/apps?act=manage и создаем новое приложение:

2. Заполняем следующие данные:
Название: Любое, его видно только во время авторизации, например авторизовавшись на нашем сайте с помощью ВК, Вы видите это, без количества участников.
Платформа: Выбираем «Сайт»
Адрес сайта: Ссылка на ваш сайт
Базовый домен: Ссылка на ваш сайт


Отлично, нажимаем подключить сайт.

3. Переходим в настройки приложения, копируем ID приложения и Защищенный ключ, сохраняем куда-нибудь и на этом работа на стороне ВК окончена, переходим к написанию скрипта.

4. Теперь самое интересное, нам нужно написать скрипт (обработчик), давайте создадим на нашем сервере в корне сайта файл auth.php и приступим к его редактированию. Хочу отметить, что на локальном сервере (OpenServer) авторизация работать не будет!

Открываем файл, я использую для этого PHPStorm и давайте создадим несколько переменных с пояснениями:

Тут все понятно, подставляем параметры из нашего приложения, ссылку указывать полностью, где лежит сам скрипт.

Далее формируем ссылку, которая будет ввести на сайт ВК с передаваемыми параметрами:


Теперь можно открыть сайт скопировав $redirect_uri


Ссылка сформирована, теперь нужно получить и обработать ответ от ВК, после того как пользователь перешел по ссылке:


После того как пользователь перешел по ссылке и подтвердил передачу данных, Вам на сервер в GET запросе вернется code, используя его мы запрашиваем у ВК токен пользователя, отправляем запрос в ВК с параметрами указанные в массиве

ВК возвращает нам токен пользователя, его можно сохранить в базу данных.

Теперь следующим запросом мы получаем данные о пользователе, используя его токен и обращаясь к API VK https://api.vk.com/method/users.get мы получаем json от VK, который мы можем распарсить. Давайте попробуем авторизоваться, заходим на нашу страницу и нажимаем авторизация:


Разрешаем и у нас на сайте появляются данные об аккаунте:

Авторизация работает. Далее можете сохранить ID в сессию и проверять авторизован пользователь или нет. Давайте доработаем код:

В самый конец добавляем:
А ссылку заменяем на:


Авторизация через ВК готова! Скачать исходник можно ниже

  • Сергей Котов
  • 03.10.2019
  • 29 537
  • 22
  • 13

После логаута пользователя VK можно получить управление его страницей

Решил попробовать себя в работе с API Вконтакте и наткнулся на интересную особенность.

Один из способов авторизации в API — это OAuth. Вкратце всё происходит так: создаёте приложение ВК, получаете его ID, а затем отправляете браузер пользователя на адрес:

Это авторизация методом Implicit flow.

Если пользователь залогинен, ему будет сразу предложено установить приложение, если нет — вначале залогиниться, а уже потом устанавливать. Если приложение уже установлено, то идёт сразу переход на страницу, в хэше которой будет токен. Дальше идёт работа с API.

Самое интересное начинается после выхода из ВК. Ваше приложение может иметь ссылку на выход вида vk.com/login.php?op=logout. Это стандартная ссылка на выход из VK. Но после выхода пользователя из VK куки остаются рабочими.

Таким образом, если опять показать страницу авторизации, ввести совершенно другой логин и пароль — вы всё равно сможете пользоваться страницей первого пользователя.

Т.е. работа ведётся следующим образом — пользователь П1 авторизуется ВКонтакте через приложение. В приведённом примере я использую standalone-приложение, но, возможно, получится и с другими видами приложений. Дальше пользователь П1 нажимает на ссылку выхода из ВК, приведённую выше. После этого ни через браузер, ни через приложение зайти в ВК без авторизации не получится. Дальше пользователь П2 авторизуется через приложение. Затем, уже через браузер пользователь попадает на страницу пользователя П1, вместо своей страницы П2. И может делать с этой страницей абсолютно всё, что угодно, приложение на данном этапе уже не нужно и не играет никакой роли.

Самое смешное то, что вы можете использовать в вашем приложении самые безобидные права. То есть не нужно пугать пользователя тем, что вы просите доступ к фоткам, аудио, видео, сообщениям и всему остальному. Можно оставить только базовые — и всё. Куки при этом всё равно будет полностью рабочими, используя их вы попадёте прямиком на страницу пользователя.

Читать:
Adobe systems incorporated что это

Можно ли считать данную особенность уязвимостью — думайте сами. По-моему, это как минимум не то, чего ожидает пользователь, нажимая на кнопку «Выход» и надеясь на то, что теперь уж его страница в безопасности.

При написании данной заметки ни один пользователь ВК не пострадал.

UPD. При авторизации использовался браузер IE7.
В поддержку я писал задолго до того, как опубликовал статью на здесь. Собственно, публикация статьи здесь и произошла в результате того, что поддержка данный сигнал проигнорировала в духе «это не баг, а фича, но, возможно, что-то изменится в будущем».

Вход на сайт через Вконтакте

Многие соцсети позволяют создавать приложения и через API получать данные пользователей, поэтому их использует для быстрой регистрации и авторизации на сайтах. Как проходит аутентификация, рассмотрим на примере VK:

  1. На сайте, пользователь нажимает на ссылку «Войти», открывается страница VK, где он разрешит приложению доступ к своим данным.
  2. После подтверждения браузер пользователя будет перенаправлен по адресу, указанному при открытии диалога авторизации. К URL добавляется GET-параметр с кодом авторизации.
  3. Скрипт выполняет ответный запрос с полученным кодом и ключом приложения для получения access_token .
  4. Полученный в ответе access_token , скрипт использует для запроса к данным пользователя.

Регистрация приложения

Для начала нужно создать приложение на странице https://vk.com/editapp?act=create

В меню «Платформа» нужно указать – сайт, заполнить поля «адрес сайта» и «основной домен».

В настройках видим ID приложения и защищённый ключ, также нужно убедится что приложение включено и видно всем.

Ссылка для входа

Сформируем и выведем ссылку по которой пользователь даст разрешение на запрошенные действия.

В redirect_uri указываем скрипт-обработчик, туда придет секретный код.

В параметре state можно передать URL текущей страницы, чтобы вернуть пользователя обратно.

При переходе по ссылке откроется страница:

Получение данных

После того как пользователь дал разрешение, он возвращается на redirect_uri , к URL добавляются GET-параметры:
https://example.com/oauth-vk.php?code=1234567890&state=https://example.com/page-1

Далее запрашивается access_token (в ответе с токеном будет e-mail). После этого выполняется метод users.get , который возвращает ID, имя, фамилию и URL аватарки.

redirect_uri должен быть такой же как в ссылке для входа.

Полученные данные пользователя

Далее все завит от реализации сайта, пользователя можно добавить в БД или обновить его данные и авторизовать в системе.

Разное → Прямая авторизация ВКонтакте перестала работать

С 17.06.2015 прямая авторизация ВКонтакте через логин и пароль перестала работать. Речь идет не об авторизации через OAuth, а именно через отправку GET запросов с помощь Curl PHP, имитирующих браузер.

Для чего этого необходимо? Для вызова некоторых функций Вконтакте, которые не доступны через API Вконтакте, или из-за существующий ограничений.

Раньше достаточно было отправить GET запрос на http://login.vk.com/?act=login передав параметры &email=*** (логин) и &pass=*** (пароль). С недавних пор авторизация не происходит, вместо этого производится переадрессация по адресу:

Решение

Для того, чтобы произвести авторизацию необходимо отправить запрос на авторизацию по адресу https://login.vk.com/?act=login . Для этого нужно использовать POST запрос, в котором кроме логина и пароля необходимо указать следующие параметры:

Из важного: добавились параметры ip_h и lg_h , которе легко парсятся со страницы http://vk.com и выглядят так:

Алгоритм авторизации Вконтакте на PHP становится следующим:

1. С помощью CURL открываем http://vk.com и парсим значения ip_h и lg_h . Простенькие регулярки будут иметь вид:

2. Передаем полученные значения вместе с остальными параметрами POST запросом на url https://login.vk.com/?act=login . В итоге запрос будет иметь приблезительно такой вид:

3. Сохраняем куки в файл и вызываем необходимую страницу Вконтакте для парсинга, например https://vk.com/feed?section=photos

Проделайте предварительно п.1 и п.2 вручную чтоб убедится что все работает, получив предварительно значения ip_h и lg_h через исходный код страницы (комбинация Ctrl+U в браузере). В результате вас должно перенаправить на пустую страницу, а в адресной строке должно содержатся некое значение __q_hash .

Доброго времени суток. У Вас получилось описанным в этом посте
методом авторизоваться? Пытаюсь так делать, но куки удаляются, а не
устанавливаются (remixq)

Похожие статьи