В этой статье вы узнаете как делается авторизация через ВКонтакте на языке программирования PHP, вы убедитесь, что это очень просто.
Также посмотрите нашу статью Как сделать регистрацию на PHP через email.
Создание приложения во ВКонтакте:
Перед тем как начать разрабатывать авторизацию через ВК, нужно зарегистрировать наше приложение или сайт, для этого заходим во вконтакт и с левого бока должен быть пункт «разработчикам».
Также можете перейти по этой ссылки.
Там же нажимаем сверху на вкладку мои приложения.
В этой вкладки выбираем приложение и нажимаем редактировать, если нет нужного нам или вообще нет не одного, то нажимаем на кнопку «Создать приложение».
Тут думаю всё понятно, единственное, для некоторых может быть не понятным, что такое базовый домен, тут просто нужно вписать доменное имя своего сайта, нажимаем «Подключить сайт».
После того как создали сайт, заходим в настройки этого сайта и там самое главное, это три пункта, «ID приложения», «Защищённый ключ» и «Доверенный redirect URI», последнее это поле, в него вы должны вписать где будет обрабатыватся авторизация.
Делаем авторизацию через ВК:
Теперь посмотрим как делается сама авторизация через ВК на PHP, для этого, сначала нужно создать кнопку, которая будет отсылать во ВК, но перед этим сделаем файл config.php, в котором будим хранить нужные нам данные.
1 2 3 4 5 6 | // Константа для ID приложения define('ID', 'ID приложения'); // Константа для Защищённый ключа define('SECRET', 'Защищённый ключ'); // Константа для Доверенный redirect URI define('URL', 'Доверенный redirect URI'); |
В этом файле просто хранятся константы нужных данных нашего приложения.
Теперь создаём страницу авторизации, вот она.
1 2 3 4 5 | <?php // Подключаем config require_once 'config.php'; ?> <a href="https://oauth.vk.com/authorize?client_id=<?= ID ?>&redirect_uri=<?= URL ?>&display=page">Войти через ВК</a> |
Тут просто подключаем файл «config.php» и создаём ссылку для входа через ВКонтакте.
Вы можете заметить, что во первых ссылка отсылается не на наш сайт, а на какую то страницу во ВК, и во вторых это три значения в GET, давайте разберём это.
Дела в том, что когда будим нажимать на эту ссылку, мы даже не заметим как попали во Вконтакт, потому что, сразу перекинемся на страницу которая указана в значение redirect_uri
, это нужно для того, что бы получить код для последующей авторизации, и таким образом мы подтверждаем наш сайт.
Потом когда мы перейдём где будем обрабатывать основную авторизацию, у нас будет GET запрос, но об этом позже.
Также есть ещё два значения в запросе, это client_id
в нём передаём ID приложения, а второй это display
, тут указывается тип страницы для авторизации, у нас это page
, которая используется для обычных WEB сайтов.
Примечание:
Если вам не понятна работа с GET запросами и вообще с формой, то посмотрите эту часть нашего учебника по PHP: PHP работа с формой.
Вот как у нас выглядит страница.
Теперь перейдём к обработчику авторизации и получению данных пользователя.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | // Подключаем файл config.php require_once "config.php"; // Проверка, на то, что есть значение code в GET запросе if (!$_GET["code"]) { // Если нет, то прерываем программу и выводим надпись exit("Что то пошло не так"); } else { // Иначе // Создаём URL для запрса $url = "https://oauth.vk.com/access_token?client_id=" . ID . "&client_secret=" . SECRET . "&redirect_uri=" . URL . "&code=" . $_GET["code"]; // Получаем токен с помощью запроса $token = json_decode(file_get_contents($url), true); if (!$token) { // Если токена нет то // Прерываем программу и выводим надпись exit("Что то пошло не так с токинам"); } else { // Иначе // Создаём URL нового запроса $url = "https://api.vk.com/method/users.get?v=5.21&user_id=" . $token['user_id'] . "&c=" . $token["access_token"] . "&fields=uid,first_name,last_name"; // Делаем запрос и получаем данные $data = json_decode(file_get_contents($url), true); // Выводим данные echo "<pre>"; var_dump($data); echo "</pre>"; } } |
Тут уже всё сложнее, сперва мы проверяем, есть ли вообще код, для последующей работе с авторизацией, если нет, то прерываем программу, если да, то делаем URL запрос.
В этом GET запросе можете заметить несколько значений два из них знакомы, о них можете ознакомится выше, остальные сейчас разберём.
Первый, client_secret
, это наш защищённый ключ, второе значение code
код который у нас есть из GET запроса.
После этого мы отправляем GET запрос с помощью функции file_get_contents()
, в качестве ответа, она вернёт JSON массив, который не читается PHP, поэтому мы объявляем функцию внутри другой функции json_decode()
, которая декодирует формат JSON, в качестве второго параметр она принимает true
, что означает декодирование в обычный ассоциативный массив PHP, это массив присваиваем переменной $token
.
После чего опять проверяем, имеет ли значение переменная $token
, если нет, то останавливаем программу и выводим сообщение, если да то опять делаем URL запрос.
Как можете заметить, значение которые мы отправляем, они все взяты из массива $token
, первое значение user_id
тут отправляем ID пользователя, второй access_token
, это токиен аутентификации, третье значение, fields
, это какие данные пользователя мы хотим получить, в нашем случае, хотим получить id пользователя и его имя, фамилию.
Важно:
Также очень важное значение v
, без него вообще не чего работать не будит, он указывает версию API.
После, точно так же, как и прошлый раз, отправляем этот запрос, получаем массив и выводим его, вот что должно получится.
Теперь авторизация ВКонтакте на PHP готов. Как видите всё работает как надо, теперь вам просто нужно полученные данные отправить в базу данных или например в cookie.
Если не знаете как работать с базой данных, то посмотрите наш учебник про работу с базой данных в PHP.
Вывод:
В этой статье мы разобрали как делается авторизация во ВКонтакте на языке программирования PHP, также, если вам что то не понятно, то посмотрите эти две раздела из документации ВК.