Как работать с API ВКонтакте
У меня часто спрашивают, как работать с API. Наиболее, популярной задачей, связанной с API, является - работа с API ВКонтакте. В данной статье я покажу, как работать с API ВКонтакте, а, главное, покажу Вам, что все API работают по единому принципу.
Вот порядок действий, который Вам необходимо сделать, чтобы начать работать с любым API:
- Найти документацию по нужному API.
- Посмотреть примеры подключения к API. Тут могут быть разные варианты. Например, на одном сервисе потребуют секретный ключ, выдаваемый после регистрации. На втором сервисе, все запросы не требуют секретных ключей. На третьем сервисе, есть и с секретным ключом, и без варианты работы. Иногда, секретный ключ называют токеном.
- Скопировать простой готовый код с сайта документации и проверить его работу. Если не работает, то ищите ошибку у себя, так как едва ли она будет у сервиса.
- Найти в документации метод, который решает Вашу задачу.
- Используя примеры и описание метода, отправить правильный запрос к API.
- В зависимости от формата ответа, разобрать его на "составные части", а дальше уже делать то, что требуется - вывести пользователю, сохранить в файл, отправить в базу данных и тому подобное.
А в качестве примера следования данной инструкции мы разберём API ВКонтакте. Итак:
- Ссылка на документацию.
- В данном случае есть методы, которые общедоступны, а потому не требуют токена, а есть методы, требующие его.
- В данном случае, примеров на конкретном языке я не нашёл. Возможно, они есть, но явно не на виду. Обычно же, у API для каждого метода есть примеры на разных языках.
- Мы хотим вывести 5 последних записей со стены конкретного пользователя, а затем вывести их у себя на сайте. Нужный нам метод тут.
Теперь мы должны отправить запрос к API, используя описание метода. Делать мы это будем через PHP:
<?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-код:
<?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 "<p><b>".($i + 1)."</b>. <i>".$wall[$i]->text."</i><br /><span>".date("Y-m-d H:i:s", $wall[$i]->date)."</span></p>"; // Выводим записи
}
?>
Как видите, всё очень просто. Самая сложная часть - разобрать на составные элементы. Я предпочитаю выводить результат от API через print_r, а уже затем писать обработку этого. Хотя можно посмотреть пример ответа в описании метода, а дальше уже написать парсер.
Вот так происходит работа с API ВКонтакте, и абсолютно аналогично она происходит с любым другим API.
-
- Михаил Русаков
Комментарии (7):
Остаётся только добавить, что если у кого-то не работает, обновите версию php, а то обработка json вроде бы есть только в 5.3 и выше.
Ответить
Спасибо) Появилась хорошая идея благодаря вашей статье!
Ответить
Все на странице выводится нормально, а это в виде "іРё РіСѓ". Есть какое-нибудь решение?
Ответить
добавьте в штекер AddCharsetDefault UTF-8
Ответить
Добавьте в файл htaccess следующее: AddDefaultCharset UTF-8
Ответить
Данные на сервер приходят в неправильной кодировке, как это можно исправить?
Ответить
Добрый день! Возникла такая проблема. Мне нужно в этом же циклу вывести еще картинку и ссылку. Вы выводите то что расположено в response->items ({"response":{"count":46,"items":[{"id":76,"from_id":-119917698,"to_id":-119917698,"date":1465914200,"post_type":"post","text":"В этом году информационным партнером IV Центрального Бизнес форума \"Рывок 2016\" стал телеканал ПРО БИЗНЕС. Телеканал ПРО БИЗНЕС – первый и единственный в России телеканал, вещающий от лица реального бизнеса. http:\/\/probusinesstv.ru\/delovaya-afisha\/15296\/") Но вот ссылка и картинка находятся в attachments (,"attachments":[{"type":"photo","photo":{"id":418857496,"album_id":-7,"owner_id":-119917698,"user_id":100,"photo_75":"http:\/\/cs630728.vk.me\/v630728626\/313d9\/rps_cNu7ozU.jpg","photo_130":"http:\/\/cs630728.vk.me\/v630728626\/313da\/w9uTB_XwssQ.jpg","photo_604":"http:\/\/cs630728.vk.me\/v630728626\/313db\/HpXxmBkVuQ4.jpg","photo_807":"http:\/\/cs630728.vk.me\/v630728626\/313dc\/4v06al3Eu00.jpg","photo_1280":"http:\/\/cs630728.vk.me\/v630728626\/313dd\/jzf23NinosE.jpg","photo_2560":"http:\/\/cs630728.vk.me\/v630728626\/313de\/3K9lW_Flq5g.jpg","width":2137,"height":692,"text":"","date":1465914201,"post_id":76,"access_key":"bc6d2d3d7e6a6673cd"}},{"type":"link","link":{"url":"http:\/\/probusinesstv.ru\/delovaya-afisha\/15296\/","title":"Предприниматели Центрального федерального округа соберутся в Смоленске","description":"","image_src":"http:\/\/cs615823.vk.me\/v615823626\/1b958\/maDHKuKz39o.jpg"}}],"comments":{"count":0},"likes":{"count":1},"reposts":{"count":1}},) Каким образом оформить можно выборку ? Заранее спасибо за помощь!
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.