Авторизация через вконтакте api.
Как быть?
Токен, полученный на клиентом, мы не можем использовать на сервере, и соответственно не можем запросить информацию о пользователе со стороны сервера, но мы можем проверить токен на валидность и узнать ид пользователя которому принадлежит данный токен.
С документации мы можем узнать что Параметр sig равен md5 от конкатенации следующих строк:
Давайте получим информацию о пользователе через open api, передадим её на сервер, проверим токен, и если все ок запишем в базу:
Настройка ссылки для входа
Первым делом сформируем ссылку используя которую пользователь нашего сайта сможет дать необходимые разрешения, на запрошенные нашим сайтом действия, например доступ к контактам.
Получение данных из вконтакте
И так, пропишем скрипт получения данных от vk по только что присланному code.
Примеры работы с api vk (вконтакте) на php
Список методов API Вконтакте | Ограниченияи рекомендации
Проблема 1
Полученный токен(sig) привязывается к ip-адресу, и при попытке использовать его на сервере вам выдаст ошибку:
Проблема 2
При таком способе авторизации нет возможности получить email пользователя, даже если вы запросите нужные права и пользователь даст согласие — вы не получите email в ответе.
Проверка авторизации
Давайте создадим модель, которая будет содержать информацию о пользователе:
Реализация автопостинга записей на стену (wall.post)
1. При регистрации приложения указываем тип платформы «Standalone-приложение»
2. Формируем ссылку и переходим по ней в браузере
client_id — ID вашего приложения, остальные параметры без изменений.
3. После перехода по ссылке и авторизации произойдёт редирект на url, который содержит токен. Этот токен сохраняем.
d5f00aca2251588a1e6d67e401d1e…. — токен
4. Устанавливаем библиотеку vk-php-sdkcomposer require vkcom/vk-php-sdk
5. Применяем метод wall.post для публикации сообщений в группу:
Регистрация приложения
В первую очередь создайте приложение на странице
Формирование ссылки для авторизации пользователя и получение токена (access token)
Подробная документация.
Формируем ссылку и выводим её на экран:
// Параметры приложения
$clientId = ‘6483919’; // ID приложения
$clientSecret = ‘yeHH2R4AnqVgrHwo3r893’; // Защищённый ключ
$redirectUri = ‘http://localhost/_blog/tests/vk-api/oauth.php’; // Адрес, на который будет переадресован пользователь после прохождения авторизации
// Формируем ссылку для авторизации
$params = array(
‘client_id’ => $clientId,
‘redirect_uri’ => $redirectUri,
‘response_type’ => ‘code’,
‘v’ => ‘5.74’, // (обязательный параметр) версия API, которую Вы используете https://vk.com/dev/versions
// Права доступа приложения https://vk.com/dev/permissions
// Если указать “offline”, полученный access_token будет “вечным” (токен умрёт, если пользователь сменит свой пароль или удалит приложение).
// Если не указать “offline”, то полученный токен будет жить 12 часов.
‘scope’ => ‘photos,offline’,
);
// Выводим на экран ссылку для открытия окна диалога авторизации
echo ‘<a href=”http://oauth.vk.com/authorize?’ . http_build_query( $params ) . ‘”>Авторизация через ВКонтакте</a>’;
session_start();// Токен будем хранить в сессии // Параметры приложения $clientId =‘6483919’;// ID приложения $clientSecret=‘yeHH2R4AnqVgrHwo3r893’;// Защищённый ключ $redirectUri =‘http://localhost/_blog/tests/vk-api/oauth.php’;// Адрес, на который будет переадресован пользователь после прохождения авторизации // Формируем ссылку для авторизации $params=array( ‘client_id’ =>$clientId, ‘redirect_uri’ =>$redirectUri, ‘response_type’=>‘code’, ‘v’ =>‘5.74’,// (обязательный параметр) версия API, которую Вы используете https://vk.com/dev/versions // Права доступа приложения https://vk.com/dev/permissions // Если указать “offline”, полученный access_token будет “вечным” (токен умрёт, если пользователь сменит свой пароль или удалит приложение). // Если не указать “offline”, то полученный токен будет жить 12 часов. ‘scope’ =>‘photos,offline’, ); // Выводим на экран ссылку для открытия окна диалога авторизации echo‘<a href=”http://oauth.vk.com/authorize?’.http_build_query($params).‘”>Авторизация через ВКонтакте</a>’; |
После нажатия на «Авторизация через Вконтакте» будет открыто окно диалога авторизации и пользователю будет предложено авторизовать приложение, разрешив доступ к необходимым настройкам, запрошенным при помощи параметра scope.После успешной авторизации приложения браузер пользователя будет перенаправлен по адресу redirect_uri, указанному при открытии диалога авторизации.