Как стать автором
Поиск
Написать публикацию
Обновить

Поддержка OAuth 2.0 платформой ВКонтакте

Время на прочтение2 мин
Количество просмотров39K
Вчера во ВКонтакте появилась поддержка открытого стандарта авторизации OAuth 2.0. Теперь интегрировать сайты и клиентские приложения с социальной сетью стало значительно проще.



На странице с документацией новой системы авторизации написано, что поддерживаются два типа авторизации: серверная и клиентская.

После прохождения процедуры авторизации внешнего сайта, сервер разработчика сможет в любое время выполнять запросы к API ВКонтакте без участия пользователя. Для того, чтобы получить “вечную” сессию, достаточно просто добавить параметр scope=offline при открытии диалога авторизации.

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

Помимо появления поддержки OAuth во ВКонтакте изменился способ взаимодействия с API. Теперь все запросы отправляются по безопасному протоколу HTTPS, в результате чего пропала необходимость подписывать каждый запрос.

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

https://api.vk.com/method/wall.get?owner_id=1

Для получения приватных данных пользователя необходимо выполнить авторизованный запрос, просто добавив параметр access_token. Это стандартный ключ доступа, получаемый в результате прохождения процедуры авторизации.

Многие методы, такие как wall.get, стали открытыми и не требуют авторизации, поэтому я подготовил небольшой пример, демонстрирующий, как это может работать:

http://skdy.org/illarionov (в адресе Вы можете указать короткое имя или id любого пользователя.)

Простой пример авторизации ВКонтакте:


1) При клике на кнопку «Войти во ВКонтакте» нужно переадресовать на адрес вида:

http://api.vk.com/oauth/authorize?client_id=2271023&redirect_uri=http://skdy.org/illarionov&display=page

<button onclick="location.href='http://api.vk.com/oauth/authorize?client_id=2271023&redirect_uri=http://skdy.org/illarionov&display=page';">Войти ВКонтакте</button>

2) После того, как пользователь произвёл необходимое действие, он будет переадресован на указанный callback с параметром code или error и error_desc, если произошла ошибка.

3) После получения code, уже с серверной стороны Вы можете получить access_token, обратившись по адресу:

https://api.vk.com/oauth/token?client_id=2271023&code=xxx&client_secret=xxx, где в качестве client_secret нужно указать защищённый ключ, который Вы можете получить в форме редактирования приложения.

$code = $_GET['code'];
$secret = 'xxx';
$resp = file_get_contents('https://api.vk.com/oauth/token?client_id=2271023&code='.$code.'&client_secret='.$secret);
$data = json_encode($resp, true);
if ($data['access_token']) {
   // работа с API
}

* This source code was highlighted with Source Code Highlighter.

На этом всё, полученный access_token позволяет работать с API.
Теги:
Хабы:
Всего голосов 129: ↑114 и ↓15+99
Комментарии89

Публикации

Ближайшие события