Pull to refresh

Автоматическое оповещение читателей о новостях с помощью ВКонтакте. Часть 4

Reading time 2 min
Views 15K
На хабре уже было несколько статей о работе с вконтактом (раз, два, три), однако оно производилось через простые запросы на страницы с последующим ее парсингом. Это ужасно неправильно, так как если верстка страницы либо порядок запросов поменяется — скрипт перестанет работать. Кроме того, если не ошибаюсь, это запрещено правилами сайта.
Для этого есть официальный API от вконтакте.


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

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

Тип приложения — Standalone. С ним у нас будет доступно больше методов, которые не доступны если подключать просто веб-сайт.


Дальше мы видим страницу управления приложением:


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

После регистрации для работы нам необходимо получить access token.
Для этого, и остальной работы с API будем использовать написанный мною класс.

В классе нужно прописать client_id:


Выполняем метод авторизации:
VkApi::auth(array('offline', 'wall'));

В метод auth() можно указать массив прав приложения. Весь список можно посмотреть в документации.
Хочу заметить, что полученный в итоге access token мы будем прописывать в тело класса. А так как обычная сессия живет не долго — нам придется постоянно обновлять токен. Есть выход — добавить в список необходимых прав offline-право. Тогда мы получим долгоживущую сессию, которая собъется только если будет сменен пароль текущего пользователя.

Запускаем скрипт в браузере и видим страницу авторизации:


Дальше запрос доступа приложения:


После разрешения на выходе нам дают все необходимые параметры:
access_token=%access_token%&expires_in=0&user_id=%userid%

Прописываем access token внутрь класса:


Всё! Готово, теперь мы можем использовать методы API.
В документации есть список и описание методов.

Например, отправляем сообщение на стену. Если отправляем на страницу или группу, в owner_id нужно добавить минус перед номером страницы. Чтобы писать от имени страницы указывается from_group.
VkApi::invoke('wall.post', array(
    'owner_id' => '%id%',
    'message' => '%message%',
    'from_group' => 1
));

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

UPD Обновил класс и примеры.
Tags:
Hubs:
+3
Comments 43
Comments Comments 43

Articles