Описание и примеры работы с api вконтакте

Как получить токен VK.COM

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


Создать приложение можно на странице. Указав название приложения, и выбрав его тип. Я выбираю , потому что тогда можно будет получить токены с бОльшим возможностями, чем в остальных вариантах (придётся поверить мне на слово, что это правда).

Создав приложение и перейдя на вкладку настроек, будет показано: id приложения, секретный ключ

Теперь, имея id приложения, можно получить токен доступа. Для этого нужно сформировать ссылку, подставив в неё id своего приложения.

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

Скопировав этот токен, можно делать первые запросы к API.

Что такое API

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

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

Совокупность этих правил и составляет единый интерфейс взаимодействия со сложной программной системой. Его называют API – Application Programming Interface.

Взаимодействие программных модулей именно через библиотеку API, это общепринятая норма. Без такого механизма строить сложные программные системы было бы просто невозможно. Ведь тогда каждый скрипт имел бы собственные правила приёма внешних команд и выдачи результатов. Взаимодействие каждых двух отдельных скриптов нужно было бы программировать отдельно, и весь проект был бы похоронен под огромной кучей разнородных правил. Разобраться в них не было бы никакой возможности. Если же в проект изначально закладывается принцип работы модулей только через API, тогда всё многообразие взаимодействий сводится к нескольким несложным правилам, которые универсальны и подходят для любого скрипта. Это очень удобно.

Чем же этот механизм может быть полезен простому программисту, который не состоит в штате компании Вконтакте и хочет просто написать какой-нибудь полезный скрипт для себя?

Примеры работы API VK на PHP

Далее нужно выбрать тип создаваемого приложения: встраиваемое, отдельное (stand-alone), или на сайте. Если выбираете последний вариант, то нужно будет ввести адрес сайта и базовый домен.

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


Теперь можно начинать программирование функции авторизации пользователя. Её код может быть таким:

Этот код выводит на экран ссылку для открытия окна авторизации пользователя.

А этот код получает универсальный токен доступа access_token:

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

Изучение работы с API Вконтакте может занять немало времени, так как он предлагает много объектов и методов. Но усилия стоят того – появится возможность писать любые приложения и игры, использующие движок ВК. Причём нет никакой разницы, на каком языке вы будете это делать – PHP, Pithon, JavaScript, C# или любой другой. Программному интерфейсу это безразлично, нужно только, чтобы соблюдались правила составления и отправки запросов.

auth_vk.py

Пример использования VK API для авторизации с помощью логина и пароля. После первой авторизации приложение сохраняет полученный access_token в текстовом файле auth_vk.ini, и последующие авторизации проиходят с помощью этого access_token.


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

ФУНКЦИИ МОДУЛЯ:

  • auth_vk_token() — авторизация с помощью сохранённого access_token-а;
  • auth_vk_password() — авторизация с помощью логина и пароля. Данная функция вызывается из auth_vk_token(), в случае, если с помощью access_token-а авторизация не удалась.

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

Как делать запросы к API

Сохраним полученный токен, потому как его нужно будет прикреплять к каждому запросу к VK API.

Для того, чтобы сделать запрос к API из PHP, нам нужна любая из доступных функций, способных совершить HTTP-запрос: file_get_contents, curl.

Запрос к методам API состоит из шаблона: где {METHODNAME} — имя метода{PARAMETERS} — параметры, индивидуальные, в зависимости от метода{ACCESS_TOKEN} — ранее сохранённый токен{V} — версия API (на момент написания статья = 5.78)

Зная всё это, сделаем первый запрос, на получение всех личных записей со стены. За стену отвечает сущность wall, а метод его get, который возвращает список всех записей со стены пользователя. И, в итоге, имя метода будет сформировано в виде —

Так, первая часть URL-адреса уже сформирована:

Теперь нужно определиться с передаваемыми параметрами (PARAMS). Все доступные, обязательные параметры с описанием можно посмотреть на странице метода. Я буду передавать который соответствует id моего пользователя.

И, можно было бы просто дописать в виде строки к существующему URL-адресу: …?owner_id=120159853

Однако, если туда добавлять множество новых параметров, то в таком виде добавлять не удобно. Потому, я создам массив параметров, где ключом будет название параметра, а значение, соответственно, его значение. А с помощью функции http_build_query() можно привести массив к виду строки нужного вида:

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

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

Осталось последний шаг — выполнение http-запроса. И, принимая тот факт, что данные возвращаются в виде JSON, то, результат, нужно дополнительно обернуть в функцию , которая приведёт JSON к обычному PHP-массиву. Вот так просто декодировать JSON.

В итоге, получаем обычный массив записей, который можем обработать как пожелаем


И, исходя из ответа выше, для получения записей выполним:

ВК-API блиц

ВК предоставляет несколько реализаций API:

  • Streaming/Long Poll — позволяет получить данные в реальном времени. Сразу же, при обновлении данных в ВК, мы получаем актуальную информацию, без обновления страницы. Streaming и Long Poll реализуют разные подходы, но суть их одинаковая.
  • Виджеты для сайта — здесь всё просто: скопировал код, без хитрых настроек, и у тебя рабочий виджет на сайте.
  • Open API — работает на клиенте. Так же просто настраивается и используется. Преимуществом является то, что не обязательно иметь сервер для выполнения запросов. Будет работать в обычном HTML + JS.
  • Callback API — позволяет получать данные от самомого ВК, не выполняя запрос. В случае обновления данных, ВК сам нам присылает новые данные. Например, пользователь подписался на нашу группу, и ВК, автоматически пришлёт информацию об этом пользователе нашему скрипту.
  • REST API — позволяет взаимодействовать с данными ВК из скрипта. Позволяет автоматизировать любые пользовательские действия.

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

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

Где найти документацию по VK Api

Соцсеть в своей документации предлагает подробное описание своего API для сторонних разработчиков. Главная страница этой документации располагается вот здесь: https://vk.com/dev/manuals. Тут описаны программные объекты и их методы, перечень возвращаемых кодов и ошибок, права доступа, шаблоны запросов и так далее.

Программист, желающий разработать какое-либо приложение (подключаемое внутри ВК либо работающее на отдельном сайте) может в коде своей программы предусмотреть вызовы методов ВК, используя эти самые правила взаимодействия API. Это даст возможность обращаться к функционалу социальной сети Вконтакте. Например, можно получать список подписчиков того или иного сообщества, делать массовые рассылки сообщений, публиковать новые записи, и так далее. Возможности здесь очень широкие. Именно на возможностях API ВК основаны многие полезные приложения. Например, музыкальные плееры для проигрывания музыки из страниц друзей, разнообразные игры, счётчики «Мои гости», альтернативные мобильные клиенты, такие как VK Settings, VK Coffee, Kate Mobile и так далее.

Полноценной работе с API Вконтакте посвящены многочисленные статьи в Интернете, эта информация очень обширна. Мы здесь покажем решение только двух конкретных задач.

getMembers.py

Простой пример получения списка подписчиков группы ВК используя API.

Может использоваться в качестве модуля для других примеров. В этом случае доступно несколько методов.

  • — возвращает первую 1000 подписчиков группы group_id.
  • — возвращает всех подписчиков группы group_id.
  • — возвращает всех подписчиков группы group_id с указанием их городов.
  • — возвращает всех подписчиков группы group_id из города city_id.

Запуск программы:

group_id — это group_id группы, для которого необходимо получить список подписчиков. По умолчанию group_id = ‘157262974’ # ID группы попечителей Школы Граня.


С этим читают