Быстрый старт
В этом руководстве вы найдете базовую информацию о принципах работы API ВКонтакте и о подготовке к его использованию. Если вы уже работали с нашим API или с аналогичными сервисами других платформ, и знаете, какое приложение хотите создать, мы рекомендуем вам перейти в соответствующий раздел документации.
API (application programming interface) — это посредник между разработчиком приложений и какой-либо средой, с которой это приложение должно взаимодействовать. API упрощает создание кода, поскольку предоставляет набор готовых классов, функций или структур для работы с имеющимися данными.
Методы и объекты
API ВКонтакте — это интерфейс, который позволяет получать информацию из базы данных vk.com с помощью http-запросов к специальному серверу. Вам не нужно знать в подробностях, как устроена база, из каких таблиц и полей каких типов она состоит — достаточно того, что API-запрос об этом знает. Синтаксис запросов и тип возвращаемых ими данных строго определены на стороне самого сервиса.
Например, для получения данных о пользователе с идентификатором 210700286
необходимо составить запрос такого вида:
https://api.vk.com/method/users.get?user_id=210700286&v=5.131
Рассмотрим отдельно все его составляющие:
- •
https://
— протокол соединения, - •
api.vk.com/method
— адрес API-сервиса, - •
users.get
— название метода API ВКонтакте, - •
?user_id= &v=
— параметры запроса.
Методы представляют собой условные команды, которые соответствуют той или иной операции с базой данных — получение информации, запись или удаление. Например, users.get
— метод для получения информации о пользователе, video.add
— метод для добавления видеозаписи в свой список, likes.delete
— метод для удаления отметки «Мне нравится».
Все методы разделены на секции. Например, для работы с сообществами вам нужны методы секции groups
, для работы с фотографиями — photos
, и так далее. Полный список методов по секциям доступен в разделе Методы API.
После названия метода нужно передать его входные данные (если они есть) — как обычные GET-параметры в http-запросе. В нашем примере мы сообщаем серверу, что хотим получить данные о пользователе с id=210700286
и формат этих данных должен соответствовать версии API 5.131 (о версиях мы еще поговорим позже). Входные параметры всегда перечислены на странице с описанием метода.
В ответ сервер вернет JSON-объект с запрошенными данными (или сообщение об ошибке, если что-то пошло не так). JSON — это формат записи данных в виде пар «имя свойства»: «значение». Если вы раньше не встречались с этим форматом, мы рекомендуем познакомиться с ним, прежде чем продолжить чтение: JSON, Wikipedia.
Ответ на наш запрос выглядит так:
{
"response": [
{
"id": 210700286,
"first_name": "Lindsey",
"last_name": "Stirling"
}
]
}
Структура ответа каждого метода также строго задана, и при работе с API вы заранее знаете, что в поле id
придет число, а в поле first_name
— строка. Такие правила оговариваются на страницах с описанием метода и соответствующих объектов, которые он возвращает в ответе. Например, users.get
— здесь описаны входные параметры метода и структура его ответа, а здесь — user
подробно расписано каждое поле объекта из ответа.
Объект из ответа может быть не уникален для конкретного метода. Например, объект пользователя с набором полей, содержащих данные о его образовании, возрасте, интересах, может возвращаться в ответе от методов users.get
, users.search
, groups.getMembers
и еще нескольких.
Регистрация приложения
В примере мы использовали метод users.get
, который позволяет получить информацию о пользователях, но для разработки приложений этого будет мало. Чтобы использовать все возможности API ВКонтакте, нужно зарегистрировать своё приложение.
Выберите Мои приложения в верхнем меню и нажмите кнопку Создать. Создать приложение можно для одной из четырех платформ:
- •Встраиваемое приложение — вы получите приложение, которое можно встроить во фрейм с внешнего сайта. Готовые приложения можно увидеть в наших каталогах: Мини-приложения, Игры.
- •Standalone-приложение — вы получите
API_ID
для внешнего сайта, мобильного или десктопного клиента. Основная мысль в том, что запросы к API должны отправляться с устройства пользователя. В интерфейсе такого приложения можно настроить SDK и подключить сертификаты для push-уведомлений. - •Сайт — вы получите
API_ID
для внешнего сайта и работы с API через сервер. Если вы хотите написать скрипт (например, на PHP), который будет обращаться к API ВКонтакте, выберите именно этот вариант. - •Скилл Маруси — платформа для создания приложений, которые взаимодействуют с голосовым помощником.
Совет. Если вы пока не знаете, какую платформу выбрать, используйте Standalone-приложение. Мы обычно рекомендуем его для тренировки.
После подтверждения откроется страница с информацией о приложении.
Откройте раздел Настройки в меню слева. В поле ID приложения будет число (например, 5490057
). Это идентификатор вашего приложения, в дальнейшем он понадобится вам, чтобы указать значение API_ID
, APP_ID
или client_id
.
Авторизация пользователя
ВКонтакте — социальная сеть, где есть дружеские связи, настройки приватности и даже черные списки. Многое зависит от того, кто просматривает страницу: кто-то увидит на ней всю ту же информацию, что и владелец, а кто-то — лишь общедоступные данные.
В API этот принцип сохраняется. Если вы скрыли список своих групп от не-друзей, то и через API ваши не-друзья не должны его увидеть. Поэтому почти все методы требуют авторизации пользователя перед началом работы. Проще говоря, сервер должен знать, кто к нему обращается за информацией, чтобы предоставить ее в том же виде, что и в основной версии сайта.
В общем случае для идентификации в API используется специальный ключ доступа, который называется access_token
.
Токен — это строка из цифр и латинских букв, которую вы передаете на сервер вместе с запросом. Из этой строки сервер получает всю нужную ему информацию. Есть разные способы получения токена, более того, он может быть выдан не только пользователю, но и сообществу, и сразу всему приложению — подробнее об этом вы можете прочитать здесь.
Мы воспользуемся самым простым способом (Implicit flow) и получим токен для работы с API из созданного вами на прошлом этапе приложения.
Откройте новую вкладку в браузере и введите в адресную строку такой запрос:
https://oauth.vk.com/authorize?client_id=5490057&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=friends&response_type=token&v=5.131
Число 5490057
в запросе нужно заменить на API_ID
вашего приложения.
Нажмите Enter. Откроется окно с запросом прав. В нем отображаются название приложения, иконки прав доступа, и ваши имя с фамилией.
Нажмите Разрешить. вы попадете на новую страницу с предупреждением о том, что токен нельзя копировать и передавать третьим лицам. В адресной строке будет URL https://oauth.vk.com/blank.html
, а после #
вы увидите дополнительные параметры — access_token
, expires_in
и user_id
. Токен может выглядеть, например, так:
51eff86578a3bbbcb5c7043a122a69fd04dca057ac821dd7afd7c2d8e35b60172d45a26599c08034cc40a
Токен — это ваш ключ доступа. При выполнении определенных условий человек, получивший ваш токен, может нанести существенный ущерб вашим данным и данным других людей. Поэтому очень важно не передавать свой токен третьим лицам.
Поле expires_in
содержит время жизни токена в секундах. 86400 секунд — это ровно сутки. Через сутки полученный токен перестанет действовать, для продолжения работы нужно будет получить новый. Есть возможность получить токен без срока действия — для этого в scope
добавьте значение offline
. Вы можете принудительно отозвать токен (например, в том случае, если он стал известен постороннему), сбросив сеансы в настройках безопасности вашего аккаунта или сменив пароль. Также, если речь идет о токене не из вашего собственного приложения, можно просто удалить приложение из настроек: https://vk.com/settings?act=apps
Поле user_id
содержит id пользователя, для которого получен токен.
Теперь вы можете сделать вызов метода от своего имени. Например, получить список друзей, которые сейчас находятся на сайте.
Для этого введите в адресную строку:
https://api.vk.com/method/friends.getOnline?v=5.131&access_token=
и вставьте после знака =
свой access_token
, затем нажмите Enter. В ответе сервер вернет список идентификаторов ваших друзей, которые сейчас онлайн. Почитать подробнее о работе этого метода можно здесь. Заметьте, вы не указали в запросе, для какого пользователя (user_id
) нужно получить список — сервер использовал значение по умолчанию, т.е. ваш идентификатор, который он получил из токена.
Подробное руководство о получении ключей доступа находится на этой странице.
Права доступа
Как вы уже знаете, все методы делятся на секции — friends
, photos
, video
и так далее. Каждая секция соответствует определенному разделу на сайте. Часто приложения создаются для работы с конкретным разделом. Например, для просмотра фотографий или для редактирования видео. При этом логично, что приложению, которое работает только с аудиозаписями пользователя, не нужен доступ одновременно и к его личным сообщениям.
Поэтому в API права доступа приложения разграничены, как и методы. Приложение может запросить доступ только к группам, а может — к группам, фотографиям и аудиозаписям. На этой странице перечислены все существующие права доступа, которые можно запросить.
Чтобы запросить права, используйте параметр scope
диалога авторизации. Когда вы получали токен для своего приложения, в scope
было указано значение friends
— и в окне авторизации приложение запросило доступ к друзьям.
У каждого права доступа есть уникальное название (friends
, video
и т.д.) и код (+2, +4, +4096).
В scope
можно перечислить названия нужных прав доступа (например, scope
=friends,video,photos
), а можно указать сумму их кодов (например, scope
=22
). Каждый код представляет собой степень двойки, и полученную таким образом сумму (битовую маску) вы всегда можете проверить на предмет содержания какого-то конкретного кода (например, с помощью account.getAppPermissions
).
Некоторые права доступа из соображений безопасности можно запрашивать только в Standalone-приложениях и только в процессе авторизации Implicit Flow, обратите на это внимание.
Что дальше
Вы познакомились с основными понятиями, связанными с API ВКонтакте. Дальше все зависит лишь от вашего вдохновения.
Конечно, на практике никто не работает с API из соседней вкладки браузера. Для этого используют самые разные языки программирования, SDK, генераторы кода. Сам механизм работы с API весьма прост, средства для отправки http-запросов и обработки ответа от сервера предусмотрены практически в любой среде разработки: а значит, возможность выбора всегда есть.