Пример работы с VK API в PHP. Что такое API ВКонтакте и зачем оно нужно

15.08.2019

У меня часто спрашивают, как работать с API . Наиболее, популярной задачей, связанной с API , является - работа с API ВКонтакте . В данной статье я покажу, как работать с API ВКонтакте , а, главное, покажу Вам, что все API работают по единому принципу .

Вот порядок действий , который Вам необходимо сделать, чтобы начать работать с любым API :

  1. Найти документацию по нужному API .
  2. Посмотреть примеры подключения к API . Тут могут быть разные варианты. Например, на одном сервисе потребуют секретный ключ, выдаваемый после регистрации. На втором сервисе, все запросы не требуют секретных ключей. На третьем сервисе, есть и с секретным ключом, и без варианты работы. Иногда, секретный ключ называют токеном .
  3. Скопировать простой готовый код с сайта документации и проверить его работу. Если не работает, то ищите ошибку у себя, так как едва ли она будет у сервиса.
  4. Найти в документации метод , который решает Вашу задачу.
  5. Используя примеры и описание метода, отправить правильный запрос к API .
  6. В зависимости от формата ответа, разобрать его на "составные части ", а дальше уже делать то, что требуется - вывести пользователю, сохранить в файл, отправить в базу данных и тому подобное.

А в качестве примера следования данной инструкции мы разберём API ВКонтакте . Итак:

  1. Ссылка на документацию .
  2. В данном случае есть методы, которые общедоступны, а потому не требуют токена, а есть методы, требующие его.
  3. В данном случае, примеров на конкретном языке я не нашёл. Возможно, они есть, но явно не на виду. Обычно же, у API для каждого метода есть примеры на разных языках.
  4. Мы хотим вывести 5 последних записей со стены конкретного пользователя, а затем вывести их у себя на сайте . Нужный нам метод .

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

$wall = file_get_contents("https://api.vk.com/method/wall.get?v=5.3&filter=others&domain=myrusakov&count=5");
print_r($wall);
?>

В данном случае, я использую API 5.3 (v=5.3 ), вывожу все записи независимо от автора (filter=others ) со своей страницы (domain=myrusakov ) в количестве 5 штук (count=5 ). Думаю, что здесь всё очень прозрачно.

Мы получили ответ в формате JSON , и теперь нам нужно перейти к последнему пункту - разобрать ответ на "составные части ". Дальше мы с Вами выведем записи со стены в более-менее читабельном виде на странице нашего сайта. Результирующий PHP-код :

$wall = file_get_contents("http://api.vk.com/method/wall.get?v=5.3&filter=others&domain=myrusakov&count=5"); // Отправляем запрос
$wall = json_decode($wall); // Преобразуем JSON-строку в массив
$wall = $wall->response->items; // Получаем массив комментариев
for ($i = 0; $i < count($wall); $i++) {
echo "

".($i + 1).". ".$wall[$i]->text."
".date("Y-m-d H:i:s", $wall[$i]->date)."

"; // Выводим записи
}
?>

Как видите, всё очень просто. Самая сложная часть - разобрать на составные элементы. Я предпочитаю выводить результат от API через print_r , а уже затем писать обработку этого. Хотя можно посмотреть пример ответа в описании метода, а дальше уже написать парсер.

Начнем с основ: что такое API? Аббревиатура расшифровывается как Application Programming Interface, или интерфейс для программирования приложений. Название, вроде бы, говорит само за себя, но лучше рассмотреть более детальное объяснение.

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

В случае веб-приложений, API может отдавать данные в отличном от стандартного HTML формате, благодаря чему им удобно пользоваться при написании собственных приложений. Сторонние общедоступные API чаще всего отдают данные в одном из двух форматов: XML или JSON. На случай, если вы решили сделать API для своего приложения, запомните, что JSON намного более лаконичен и прост в чтении, чем XML, а сервисы, предоставляющие доступ к данным в XML-формате, постепенно отказываются от последнего.

API в веб-приложениях на примерах

Некое приложение – например, Github – имеет свой API, которым могут воспользоваться другие разработчики. То, как они будут пользоваться им зависит от возможностей, которые предоставляет API и от того, насколько хорошо работает фантазия у разработчиков. позволяет, например, получать информацию о пользователе, его аватаре, читателях, репозиториях и множество других полезных и интересных сведений.

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

{ "login" : "Freika" , "id" : 3738638, "avatar_url" : "https://avatars.githubusercontent.com/u/3738638?v=3" , "gravatar_id" : "" , "url" : "https://api.github.com/users/Freika" , "html_url" : "https://github.com/Freika" , "followers_url" : "https://api.github.com/users/Freika/followers" , "following_url" : "https://api.github.com/users/Freika/following{/other_user}" , "gists_url" : "https://api.github.com/users/Freika/gists{/gist_id}" , "starred_url" : "https://api.github.com/users/Freika/starred{/owner}{/repo}" , "subscriptions_url" : "https://api.github.com/users/Freika/subscriptions" , "organizations_url" : "https://api.github.com/users/Freika/orgs" , "repos_url" : "https://api.github.com/users/Freika/repos" , "events_url" : "https://api.github.com/users/Freika/events{/privacy}" , "received_events_url" : "https://api.github.com/users/Freika/received_events" , "type" : "User" , "site_admin" : false , "name" : "Evgeniy" , "company" : "" , "blog" : "http://frey.su/" , "location" : "Barnaul" , "email" : "" , "hireable" : true , "bio" : null, "public_repos" : 39, "public_gists" : 13, "followers" : 15, "following" : 21, "created_at" : "2013-03-01T13:48:52Z" , "updated_at" : "2014-12-15T13:55:03Z" }

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

Одного API недостаточно

Создать полноценный API для своего приложения – лишь половина дела. Как вы предполагаете обращаться к API? Как к нему будут обращаться ваши пользователи?

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

Еще раз воспользуемся Github для приведения примера: для работы с АПИ этого прекрасного сервиса (а интерфейс у него предоставляет обширнейшие возможности) создано несколько библиотек на различных языках, например гем . В документации к таким библиотекам (и приведенному в качестве примера гему) любой заинтересованный разработчик сможет отыскать все необходимые способы получения информации от Гитхаба и отправки её обратно через API сервиса.

Таким образом, если вы создаете собственный API, подумайте, возможно стоит озаботиться созданием так же и библиотек для работы с ним на наиболее распространенных языках. И будьте готовы, что при определенном уровне востребованности вашего приложения кто-то другой может создать собственную библиотеку для работы с вашим API. Это нормально.

Полезные ссылки

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

Социальные сети стали неотъемлемым инструментом продвижения сайтов. Для раскрутку сайта через соц. сети следует создать группу или страничку данного сайта. Набирать подписчиков, выкладывать новости на стену и много чего ещё (это тема отдельной заметки). Многие эти процессы можно автоматизировать используя API (интерфейс прикладного программирования) соответствующей социальной сети. В этой заметке я разберу как подключиться к vk api (вконтакте), как начать работать c вк апи, а так же приведу несколько примеров работы с api вконтакте.

Создание приложения вконтакте

И так приступим. Vk api имеет много методов, но одним из основных их различий является то, что для выполнения запросов к вк апи через некоторые методы требуется специальный ключ доступа - токен (access_token). Получить его можно создав своё приложение. Нам предлагают несколько видов приложений, но я выбираю тип Standalone. Мне его хватает. Для начала создания приложения переходим по ссылке и попадаем в следующее окно.


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


В вкладке настройки мы видим поля с названием ID приложения и защитный ключ. Записываем куда нибудь эти данные. Больше ничего в вкладках я не делал. Состояние приложения оставил в положении отключено. Жмём сохранить настройки. Всё, мы создали приложение вконтакте.

Получение токена (access_token) api вк

Https://oauth.vk.com/authorize?client_id= &display=[вид окна] &redirect_uri=https://oauth.vk.com/blank.html&scope=[права приложения] &response_type=token&v=5.52

  • client_id - ID нашего приложения, полученный раньше.
  • display - вид окна, в котором будет происходить авторизация. Может быть page, popup, touch и wap
  • scope - права доступа нашего приложения относительно данных пользователя. О правах поподробнее ниже.

Права приложения вк относительно заданного пользователя могут задаваться в текстовом и цифровом виде. В текстовом это будет выглядеть так scope=friends,messages,groups . Этой строкой кода мы разрешили приложению vk доступ к друзьям, сообщениям и группам пользователя. Так же права задаются и в цифровом виде. Для каждого правила есть битовая маска и сумма этих масок и будет разрешать приложению определённые действия. Например право friends(+2), messages(+4096), groups(+262144), в итоге сумма битовых масок будет 266242 и код scope=266242 будет аналогом scope=friends,messages,groups . Отдельное внимание хочу уделить праву offline . Установка этого права делает получаемый нами токен бесконечным. Если это право не задать через определённое время токен нужно будет получать снова. Подробнее о правах приложения вк можно почитать здесь . В итоге давайте составим адрес для получения токена приложению с правами доступа к друзьям, сообщениям и группам пользователя, а так же с бессмертным токеном. Id приложения пусть будет 123456. Данный адрес будет выглядеть так:

Https://oauth.vk.com/authorize?client_id=123456&display=page&redirect_uri=https://oauth.vk.com/blank.html& scope=friends,messages,groups,offline&response_type=token&v=5.52


Подтверждаем действие и попадаем на страницу с предупреждением, из адресной строки браузера берём наш полученный токен. Это будет после #access_token= , код expires_in=0 говорит нам что токена (access_token) api вк бессмертный. Соответственно user_id= это id пользователя, для которого мы получили токен.

Зайдём в настройки аккаунта во вкладку настройки приложений и увидим наше приложение.


Теперь у нас всё готово для работы с апи вконтакте.

Примеры работы с api vk

Для работы с api вк я использую язык программирования php. Поэтому и примеры я буду приводить на php. Для того, что бы выполнить какое либо действие, нам нужно послать запрос к api vk. Запрос мы можем послать и через адресную строку браузера. Тоесть запрос это есть определённый урл адрес с заданными в нём определёнными параметрами. Синтаксис составления такого урл описан ниже.

Https://api.vkontakte.ru/ method/[ВЫЗЫВАЕМЫЙ МЕТОД]?[ПАРАМЕТРЫ ВЫЗЫВАЕМОГО МЕТОДА]

Список методов api vk находится здесь .Больше пока заострять на этом внимания не будем, потом на реальных примерах всё станет ясно. Осталось только разобраться как запрос к апи вконтакте отправить средствами php. Для этого будем использовать php функцию file_get_contents , а так же функцию json_decode так как ответ от сервера мы получим в формате json. Вот шаблон выполнения запроса к вк на php.

$result=json_decode(file_get_contents("https://api.vkontakte.ru/ method/[ВЫЗЫВАЕМЫЙ МЕТОД]?[ПАРАМЕТРЫ ВЫЗЫВАЕМОГО МЕТОДА]"));

ну а теперь несколько примеров работы с апи vk

$userid=12345; $mytoken=56789; /*вернёт объект с значениями пола и дня рождения пользователя*/ $request_params = array("user_id" => $userid, "fields" => "sex", "fields" => "bdate"); $get_params = http_build_query($request_params); $result = json_decode(file_get_contents("https://api.vk.com/method/users.get?". $get_params)); /*проверка пользователя на бан вк*/ $request_params = array("user_id" => $user_id, "fields" => "deactivated"); $get_params = http_build_query($request_params); $result = json_decode(file_get_contents("https://api.vk.com/method/users.get?". $get_params)); if(isset($result->response->deactivated)){ echo "Страница заморожена или удалена"; } /*отправим сообщение пользователю с user_id=222222*/ $mesage="Привет, как дела?"; //кодируем строку $msg=urlencode($mesage); $result = json_decode(file_get_contents("https://api.vkontakte.ru/method/ messages.send?user_id=222222& message=".$msg."&access_token=".$mytoken)); /*приглосим в друзья пользователя с user_id=222222*/ $mesage="Давайте дружить"; $msg=urlencode($mesage); $result=json_decode(file_get_contents("https://api.vkontakte.ru/ method/friends.adduser_id=222222& text=".$msg."&access_token=".$mytoken));

Методов у апи много, так что советую читать документацию. Конечно запросы не всегда выполняются правильно и возвращают коды ошибок. Ошибки можно посмотреть здесь . Так что вот так вот просто можно подключиться к api vk и автоматизировать свои действия в контакте.

Тем, кто решил заняться разработкой приложений для ВКонтакте рано или поздно придется столкнуться с таким понятием как API (application programming interface), что в дословном переводе означает интерфейс прикладного программирования.


Более просто – API это целый комплекс разнообразных готовых функций, готовых классов, констант и т.д., которые можно использовать в сторонних . API ВКонтакте постоянно дорабатывается и сегодня это – уже полнофункциональный набор дополнений, позволяющий .

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

  1. На API был реализован доступ приложений к друзьям, их фото, видеозаписям. Приложения сейчас могут самостоятельно создавать альбомы, размещать в них информацию . Ранее такого не было. Что важно, пользователь при установке такого приложения сам решает, открывать ему доступ к личным данным или нет.
  2. Рассылка приложениями уведомлений. Да, это порой надоедливое всплывающее уведомление в левой нижней части экрана также реализовано на API.
  3. Приглашать друзей в приложения стало проще также благодаря интерфейсу прикладного программирования , на котором была реализована данная функция массового приглашения. Впоследствии эти приглашения стали использоваться и для рекламы.
  4. Со страниц приложений исчезла реклама от ВК. Теперь разработчик игры или программы для ВК сам решает, нужна ли ему в его «флешке» реклама. Если да – он вправе разместить собственную и получать с нее 100% прибыль .
  5. Как назвали это разработчики ВК, пользователи, интегрирующие приложения, получили доступ к внутренней экономике сети. Проще говоря, стало доступным API позволяющее использовать ВКонтакте в качестве внутренних расчетов .
  6. Возможность запуска приложений в полноэкранном режиме . Увеличение максимального размера фрейма дало возможность для размещения дополнительных баннеров с рекламой, так что сегодня разработка приложений для ВК – это не просто удовольствие, а довольно прибыльное занятие при решении заняться рекламой, продажей баннеров с него.
  7. Сторонние приложения распространяются сейчас и через ленту новостей . Это еще один шаг для их популяризации. Кроме того (пусть уже и было это давно, приложению доступной стала миниатюрная иконка).
  8. Порядок вывода приложений также реализован на API. Сегодня по умолчанию, те игры, которые запускаются чаще всего – находятся у вас на первых позициях. Которыми давно не пользовались – найдете в конце списка.
  9. Благодаря API стала доступна и подробная встроенная статистика. Сегодня вы легко можете посчитать посетителей, просмотры страниц, пол, возраст, местонахождение пользователя приложения. Вся информация представляется максимально наглядный образом, в виде flash графиков, которые строятся моментально. Сделано это в первую очередь для рекламы (продажи рекламных площадей). Вы получаете статистику, видите что приложение используют десятки тысяч людей. Показываете это рекламодателю, который наверняка захочет оплатить баннер именно в таком приложении.
  10. Для самых популярных приложений стала возможна регистрация коротких поддоменов (например chat.vk.com и аналогичных) для простого запоминания и быстрого доступа.
  11. Ну и, наконец, появилась возможность вывода информации на личных страницах пользователей .

Мы выпустили новую книгу «Контент-маркетинг в социальных сетях: Как засесть в голову подписчиков и влюбить их в свой бренд».

Подписаться

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

Что значит API

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

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

API интерфейс позволяет не тратить свое время, деньги и силы на покупку «нового велосипеда». Вы получаете работающий информационный порт, получающий и отдающий необходимые объемы данных в целях вашей разработки.

Плюсы:

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

Минусы:

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

Примеры API

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

VKAPI

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

Все запросы осуществляются к адресу https://api.vk.com/method/

После слэша идёт наименование используемого API-метода и передаются GET-параметры запроса. Ответ так же приходит по HTTPS в формате JSON.

TELEGRAM BOT API

Одно из самых популярных API. С его помощью осуществляется контроль ботов в мессенджере Telegram. После создания бота через @botfather и получения необходимых ключей доступа, вы можете начать взаимодействие с внутренним интерфейсом.

Запросы осуществляются по адресу https://api.telegram.org/bot0000000:token/

Где вместо bot0000000 ставится уникальный идентификатор вашего бота, а token выражает секретный ключ.

Запросы посылаются через HTTPS соединения, название метода указывается через слэш к основному адресу. Ответ приходит в формате JSON.

OPEN WEATHER MAP API

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

Формат работа: HTTP передача по api.openweathermap.org/data/2.5/weather?id= c указанием идентификационного номера желаемого города. Ответ сервера: JSON.

GOOGLE MAPS API

Что может быть приятнее, чем интерактивная карта мира на сайте? Особенно, если это не шаблонная вставка из Google Maps, а ваша персональная редакция популярной карты с личными кластерами маркеров. Карта будет взаимодействовать с другими скриптами на сайте, посылая информацию о кликах и координатах.

Подобные возможности предлагает JavaScript API Google Maps. Модуль полностью скриптовой и работает на стороне браузера, поэтому HTTP-запросы из PHP и формирование заголовков на стороне сервера, как было в других API, нам не нужно.

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

var mark = new google.maps.Marker({
position: myPOS,
map: map,
title:"Hello!"
});

Для чего нужно и чем полезно использование API

Полезных функций довольно много.

Первый аспект

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

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

Второй аспект

Если вы владелец сложных вычислительных мощностей, популярного сервиса или хранилища данных для открытого или полуприватного доступа, то хорошим ходом будет поднять собственное API. Что это даст:

  • Большой поток клиентов.
  • Упрощенный доступ к вашим услугам для партнеров.
  • Удобство статистического анализа использования сервиса.

Третий аспект

Почти тот же, что и второй. Но без необходимости реализовывать API для открытого доступа. Если у вас есть портал, и вы хотите создать под него мобильное приложение на Android/IOS, то переписать систему под единое API – лучшее решение. Вся структура данных систематизируется. Сайт и приложение будут работать через единые каналы данных.