Пример авторизации vk api

Для того, чтобы создать приложение нам понадобится:

Заходим на сайт и создаем приложение

Нажмите, чтобы открыть в новом окне.

Создаем приложение для авторизации через api vk

Далее в настройках приложения нам потребуется 3 позиции:
1). «ID приложения»( копируем )
2). «Защищённый ключ»( копируем )
3). Состояние — «включено и видно всем».

Нажмите, чтобы открыть в новом окне.

Создаем приложение для авторизации через api vk

Делаем ссылку : «Войти через ВКонтакте»

Переходим ко второму шагу — авторизации через api vk — нам нужна ссылка вида : «Войти через ВКонтакте»

client_id = ID приложения → см. создание приложения. там было копируем. Помещаем в ниже идущий код.

redirect_uri — создаем страницу вида : «https://ваш_сайт.com/login_vk.php» — после выполнения первой части кода авторизации мы вернемся(автоматически перекинет) на эту страницу!

VK API Урок авторизация на сайте через вконтакте апи

scope — доступ к емайлу.

‘client_id’ => ‘ID приложения’,

$url = ‘https://oauth.vk.com/authorize?’ . urldecode(http_build_query($params));

Если все сделано правильно: Далее при нажатии на ссылку «Войти через ВКонтакте»

Должно появиться вот такое окно:

Делаем ссылку : ‘Войти через ВКонтакте‘

Получаем данные для авторизации api vk

После того, как пользователь согласится, то его перекинет на страницу

на redirect_uri, к URL добавляются GET-параметры:

https://example.com/login_vk.php?code=1234567890

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

На странице https://example.com/login_vk.php

‘client_i’ =>’ID приложени’,

‘client_secre’ =>’Защищённый клю’,

$data = file_get_contents’https://oauth.vk.com/access_token’ . urldecode(http_build_query($params)));

$data = json_decode($data, true);

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

$info = file_get_contents’https://api.vk.com/method/users.get’ . urldecode(http_build_query($params)));

$info = json_decode($info, true);

Если все правильно сделано, то получится вот такой ответ:

Это будет в том числе массив:

«first_name» => «Имя пользователя»,

«last_name» => «Фамилия пользователя»,

Массив получается вложенный. его можно сократить — это будет, просто, удобнее.

Поместите эту строку перед выводом «print_r»

$info = $info[response][0];

Ваш массив будет вот такого вида:

«first_name» => «Имя пользователя»,

Вебинар: «Авторизация на своем сайте через VK API»

«last_name» => «Фамилия пользователя»,

Что делать с полученными данными при авторизации vk?

Записываем данные на носитель.

Дальнейший алгоритм действий при авторизации vk?

Запускаем сессию . Создаем сессию пользователя vk, например:

$_SESSION[‘user’][‘name’] = $info[first_name];
$_SESSION[‘user’][’email’] = $email;
И др.

И ниже получившегося кода создаем условие с(например) приветствием:

Источник: dwweb.ru

Авторизация на сайте через ВК с занесением пользователя в базу данных (PHP)

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

Шаг 1: Подключение приложения

На сайте ВК необходимо создать новое приложение (https://vk.com/apps?act=manage), придумать любое название, поставить чекбокс на «сайт» и указать ссылку на свой сайт:

Далее во вкладке «Настройки» нужно найти и куда-нибудь себе скопировать ID приложения и защищённый ключ:

Шаг 2: База данных

Поскольку всех пользователей мы будем сохранять в БД, я создам одну таблицу и назову её «users». Для теста сделаю 7 полей:

id — идентификатор пользователя (число)

vk_id — ID страницы пользователя в ВК (число)

first_name — имя (строка)

last_name — фамилия (строка)

sex — пол (чисто)

photo_200 — ссылка на аватарку (строка)

join_time — дата регистрации юзера на нашем сайте (число)

Шаг 3: Написание кода

Архив с кодом, как и всегда, будет прикреплён к статье. Ну, а я для начала создаю необходимые для дальнейшей работы файлы:

Еще по теме:  Как отчет до лета Вконтакте

init.php (конфигурационный файл)

index.php (главная страница)

profile.php (профиль пользователя)

папка logout, внутри файл index.php (для выхода из аккаунта)

Также в папку с сайтом закидываю две библиотеки (для работы с БД и для работы с VK API), и в итоге получается как-то так:

Далее открываем файл init.php, начинаем кодить. Сразу же подключаем библиотеки и делаем старт сессии, дабы в дальнейшем использовать суперглобальный массив $_SESSION. Чуть ниже создаём несколько констант для работы с БД, а также массив с инфой о нашем приложении (которое мы создали на 1 шаге):

‘*******’, // ID приложения ‘client_secret’ => ‘********************’, // Защищённый ключ ‘redirect_uri’ => ‘****************’ // Страница, на которую нас перебросит после авторизации );

Используя ранее созданные константы нужно:

а) подключиться к базе данных, используя статический метод create() класса Mysql;

б) создать экземпляр класса SiteAuth, чтобы записать массив SETTINGS в одноимённое свойство этого класса.

$db = KrugozorDatabaseMysql::create( SERVER, USERNAME, PASSWORD )->setDatabaseName( DATABASE_NAME )->setCharset( CHARSET ); // Подключение к БД $auth = new DigitalStarvk_apiSiteAuth( SETTINGS ); // Создаём экземпляр класса SiteAuth

Далее будет срабатывать проверка на авторизацию пользователя. Если результат положителен — значит нужно вытащить из БД данные юзера:

if ( $_SESSION[‘user_id’] ) // Проверяем, есть в массиве $_SESSION айди юзера < $row = $db->query( «SELECT * FROM users WHERE `vk_id` = ?i LIMIT 1″, $_SESSION[‘user_id’] )->fetchAssoc(); // Вытаскиваем из БД инфу о юзере $login = $row[‘first_name’] . ‘ ‘ . $row[‘last_name’]; // Конкотенируем имя и фамилию пользователя для удобства, записываем результат в переменную $login > else < $login = »; // Если пользователь не авторизован, то логин будет равен пустой строке >

На этом написание кода в файле init.php окончено.

Переходим к оформлению файла index.php (главной страницы сайта). Надолго застревать тут не будем, ведь в этом файле будет в основном html-разметка и пара стилей для красоты:

Главная body header footer .site-name .login-btn

Название сайта

get_link() // Распечатываем ссылку на авторизацию, есди юзер не авторизован ?>» >Авторизация Футер

Закончили.

Следующий на очереди файл profile.php (пользовательский профиль). HTML-разметка здесь будет такой же, как и на главной, однако в самом верху тут нужно добавить кое-какой php-код.

Начинаю с подключения init.php и проверки на авторизацию:

Если пользователь не авторизован, то, соответственно, необходимо его авторизовать. Ранее мы создали экземпляр класса SiteAuth в переменной $auth, поэтому теперь можем использовать метод auth() для начала процесса авторизации юзера:

auth(); > ?>

Теперь, если посмотреть, что находится в переменной $auth, то увидим следующее:

Внутри этой непонятной штуки можно наблюдать так называемый Access Token, без наличия которого получить какую бы то ни было информацию о человеке из ВК (имя, фамилию, аватарку и т.д.) не получится. Но у нас он теперь есть, поэтому подтянуть данные с ВК не составит труда. Кстати, токен можно сохранить в БД, чтобы его можно было юзать в будущем. Но я сейчас это делать не буду, потому как токен использую всего единожды:

auth(); // Запуск процесса авторизации $vk = DigitalStarvk_apivk_api::create( $auth->data[‘access_token’], ‘5.131’ ); // Авторизируемся через токен пользователя. Вторым параметром метода create указывается вермия VK API $user_info = $vk->userInfo( $auth->data[‘user_id’], $scope = [ ‘fields’ => ‘id, first_name, last_name, sex, photo_200’ ] ); // Вытягиваем с ВК нужную нам инфу $_SESSION[‘user_id’] = $user_info[‘id’]; // Записываем в массив $_SESSION айдишник юзера > ?>

Теперь надо бы выяснить, зарегистрирован ли пользователь на нашем сайте. Если да, то заново регать его не нужно, достаточно просто дать ему возможность захода в аккаунт:

auth(); // Запуск процесса авторизации $vk = DigitalStarvk_apivk_api::create( $auth->data[‘access_token’], ‘5.131’ ); // Авторизируемся через токен пользователя. Вторым параметром метода create указывается вермия VK API $user_info = $vk->userInfo( $auth->data[‘user_id’], $scope = [ ‘fields’ => ‘id, first_name, last_name, sex, photo_200’ ] ); // Вытягиваем с ВК нужную нам инфу $_SESSION[‘user_id’] = $user_info[‘id’]; // Записываем в массив $_SESSION айдишник юзера $result = $db->query( «SELECT * FROM `users` WHERE `vk_id` = ?i», $user_info[‘id’] )->fetchAssoc(); // Поиск в БД по vk_id if ( isset( $result[‘id’] ) and $result[‘id’] ) // Если пользователь есть в базе, то обновляем его данные $db->query( «UPDATE `users` SET `first_name` = ‘?s’, `last_name` = ‘?s’, `sex` = ?i, `photo_200` = ‘?s’ WHERE `vk_id` = ?i», $user_info[‘first_name’], $user_info[‘last_name’], $user_info[‘sex’], $user_info[‘photo_200’], $user_info[‘id’] ); else // Если в базе пользователя не оказалось, то добавляем его $db->query( «INSERT INTO `users` SET `vk_id` = ?i, `first_name` = ‘?s’, `last_name` = ‘?s’, `sex` = ?i, `photo_200` = ‘?s’, `join_time` = ?i», $user_info[‘id’], $user_info[‘first_name’], $user_info[‘last_name’], $user_info[‘sex’], $user_info[‘photo_200’], time() ); > ?>

Еще по теме:  Пропал звук Вконтакте что делать на ПК

Ниже добавляем HTML-код (по сути такой же, как и на главной):

Профиль body header footer .site-name .login-btn main > p > span

Название сайта

top.location.href=»‘ . $auth->get_link() . ‘»;’ // Ссылка на регу ?> Футер

Внутри тега распечатаю все имеющиеся данные о пользователе:

:(

Имя и фамилия:

Пол:

Дата регистрации на сайте: Выйти

Вы не авторизованы

Смотрим, что получилось:

Как видите — всё работает. И это хорошо 🙂

Последнее, что мы сделаем — так это разлогинивание. То бишь выход с акка.

Для этого понадобится файл index.php, который в начале мы создали в папке logout:

Открываем его, пишем следующий код:

top.location.href=»/»;»; // Переключаем человека на главную страницу сайта

Всё! Ссылка на архив с файлами тестового сайта и дампом БД ниже:

  • 5id15
  • 27.06.2022
  • 3 637
  • 2
  • 5

Источник: kotoff.net

Авторизация через ВКонтакте на PHP

авторизация вконтакте php

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

Создание приложения во ВКонтакте:

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

Кнопка

Также можете перейти по этой ссылки.

Там же нажимаем сверху на вкладку мои приложения.

Меню для ВК разработчиков

В этой вкладки выбираем приложение и нажимаем редактировать, если нет нужного нам или вообще нет не одного, то нажимаем на кнопку «Создать приложение».

Добавление сайта в API ВК

Тут думаю всё понятно, единственное, для некоторых может быть не понятным, что такое базовый домен, тут просто нужно вписать доменное имя своего сайта, нажимаем «Подключить сайт».

После того как создали сайт, заходим в настройки этого сайта и там самое главное, это три пункта, «ID приложения», «Защищённый ключ» и «Доверенный redirect URI», последнее это поле, в него вы должны вписать где будет обрабатыватся авторизация.

Делаем авторизацию через ВК:

Теперь посмотрим как делается сама авторизация через ВК на PHP, для этого, сначала нужно создать кнопку, которая будет отсылать во ВК, но перед этим сделаем файл config.php, в котором будим хранить нужные нам данные.

// Константа для ID приложения
define ( ‘ID’ , ‘ID приложения’ ) ;
// Константа для Защищённый ключа
define ( ‘SECRET’ , ‘Защищённый ключ’ ) ;
// Константа для Доверенный redirect URI
define ( ‘URL’ , ‘Доверенный redirect URI’ ) ;

В этом файле просто хранятся константы нужных данных нашего приложения.

Теперь создаём страницу авторизации, вот она.

// Подключаем config
require_once ‘config.php’ ;
< a href = «https://oauth.vk.com/authorize?client_id=display=page» > Войти через ВК < / a >

Тут просто подключаем файл «config.php» и создаём ссылку для входа через ВКонтакте.

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

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

Еще по теме:  Где найти пиксель Вконтакте

Потом когда мы перейдём где будем обрабатывать основную авторизацию, у нас будет GET запрос, но об этом позже.

Также есть ещё два значения в запросе, это client_id в нём передаём ID приложения, а второй это display , тут указывается тип страницы для авторизации, у нас это page , которая используется для обычных WEB сайтов.

Примечание:

Если вам не понятна работа с GET запросами и вообще с формой, то посмотрите эту часть нашего учебника по PHP: PHP работа с формой.

Вот как у нас выглядит страница.

Кнопка для входя через ВК

Теперь перейдём к обработчику авторизации и получению данных пользователя.

// Подключаем файл config.php
require_once «config.php» ;
// Проверка, на то, что есть значение code в GET запросе
if ( ! $_GET [ «code» ] ) <
// Если нет, то прерываем программу и выводим надпись
exit ( «Что то пошло не так» ) ;
> else < // Иначе
// Создаём URL для запрса
// Получаем токен с помощью запроса
$token = json_decode ( file_get_contents ( $url ) , true ) ;
if ( ! $token ) < // Если токена нет то
// Прерываем программу и выводим надпись
exit ( «Что то пошло не так с токинам» ) ;
> else < // Иначе
// Создаём URL нового запроса
// Делаем запрос и получаем данные
$data = json_decode ( file_get_contents ( $url ) , true ) ;
// Выводим данные
echo «

» ;
var_dump ( $data ) ;

Тут уже всё сложнее, сперва мы проверяем, есть ли вообще код, для последующей работе с авторизацией, если нет, то прерываем программу, если да, то делаем 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.

После, точно так же, как и прошлый раз, отправляем этот запрос, получаем массив и выводим его, вот что должно получится.

Вывод данных из авторизация API вконтакте на PHP

Теперь авторизация ВКонтакте на PHP готов. Как видите всё работает как надо, теперь вам просто нужно полученные данные отправить в базу данных или например в cookie.

Если не знаете как работать с базой данных, то посмотрите наш учебник про работу с базой данных в PHP.

Вывод:

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

  • Знакомство с API ВКонтакте;
  • Получение ключа доступа;

Источник: prognote.ru

Рейтинг
( Пока оценок нет )
Загрузка ...