Api вконтакте примеры. Что такое API ВКонтакте и зачем оно нужно

Тем, кто решил заняться разработкой приложений для ВКонтакте рано или поздно придется столкнуться с таким понятием как 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. Ну и, наконец, появилась возможность вывода информации на личных страницах пользователей .

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

Предупреждаю сразу, статья не для новичков и некоторые моменты я пояснять не буду, так как статья получится очень длинной. Данными статьями я хочу лишь показать принцип работы с VK API и примеры кода. И конечно же код будет доступен на github .

Основная информация

Первое, что нам нужно для создания нашего приложения, это перейти по адресу https://vk.com/dev . Далее переходим в «Мои приложения» и нажимаем кнопку «Создать приложение» . Вконтакте позволяет регистрировать 3 типа приложений, краткое описание каждого:

  • Standalone-приложение - это для мобильных клиентов, десктопных программ и сайтов на которых взаимодействие с API будет вестись из Javascript.
  • Веб-сайт - если вы хотите написать скрипт для веб сайта, который будет использовать API указывайте этот вариант.
  • IFrame/Flash приложение - игры в вконтакте и т.д.

Пишем имя приложения, тип выбираем «Веб-сайт», в адрес сайта и базовый домен указываем собственно адрес вашего сайта и домен. Если разрабатываете локально, можно указывать http://localhost .

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

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

  1. Пользователь авторизирует учетную запись ВК в приложении.
  2. Получает специальный токен.
  3. Выполняет запросы к API.

Теперь нужно собственно написать код, который позволит нам взаимодействовать с API. Писать мы будем на PHP с подключением некоторых библиотек. Нам понадобится composer , если у вас не установлен, то можете скачать его перейдя по этой ссылке .

В папке проекта создаем файл composer.json и записываем в него следующее:

{ "require": { "slim/slim": "^3.0", "twbs/bootstrap": "4.0.0-alpha.6", "illuminate/database": "^5.4", "slim/twig-view": "^2.2", "guzzlehttp/guzzle": "~6.0" } }

Сохраняем файл, открываем консоль и переходим в папку с нашим проектом в котором есть созданный нами файл. Выполняем команду composer install .
Этой командой мы установили мини фреймворк Slim, Bootstrap для быстрой верстки, пакет для работы с базой данных и шаблонизатор.

Структура приложения

Структура очень проста и включает в себя несколько файлов и папок.

  • app — для настроек приложения, в этой папке будем держать маршруты, классы и прочие файлы настроек.
  • public — основная папка в которой содержится файл index.php и файлы стилей
  • resources — папка для представлений(views)

Создаем файлы

public/index.php

run();

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

app/app.php

include "../vendor/autoload.php"; // Debug $config = [ "settings" => [ "displayErrorDetails" => true, "LogLevel" => "debug", "vk" => [ "client_id" => "ID ВАШЕГО ПРИЛОЖЕНИЯ", "client_secret" => "СЕКРЕТНЫЙ КЛЮЧ ВАШЕГО ПРИЛОЖЕНИЯ", "redirect_uri" => "http://vk-tutor.com/authorize", "display" => "popup", "scope" => "friends,wall,offline", "response_type" => "code" ] ], ]; $app = new Slim\App($config); // DI for twig view $container = $app->getContainer(); $container["view"] = function ($container) { $view = new \Slim\Views\Twig("../resources/views", [ "cache" => false ]); $basePath = rtrim(str_ireplace("index.php", "", $container["request"]->getUri()->getBasePath()), "/"); $view->addExtension(new Slim\Views\TwigExtension($container["router"], $basePath)); return $view; }; include "classes/VK.php"; // Routes require "routes.php";

Не пугайтесь, сложного нет ничего. Просто подключаем загрузчик, внедряем зависимость для применения Twig и подключаем файл с маршрутами.

app/routes.php

get("/", function ($request, $response) { $vk = new VK($this->get("settings")["vk"]); if (isset($_SESSION["vk"])) { if (!isset($_SESSION["account"])) { // Устанавливаем токен $vk->accessToken = $_SESSION["vk"]->access_token; // Получаем информацию о текущем пользователе // Записываем всю информацию в сессию $_SESSION["account"] = $vk->getAccountInfo($_SESSION["vk"]->user_id); } return $this->view->render($response,"index.html", ["vk" => $vk, "account" => $_SESSION["account"]->response]); } return $this->view->render($response,"index.html", ["vk" => $vk]); }); $app->get("/authorize", function ($request, $response) { // Проверяем, есть ли в адресной строке код if ($request->getQueryParam("code") != NULL) { $vk = new VK($this->get("settings")["vk"]); // Получаем токен $_SESSION["vk"] = $vk->getAccessToken($request->getQueryParam("code")); } return $response->withStatus(302)->withHeader("Location", "../"); });

Теперь наше приложение полностью готово к использованию. Для рендеринга страницы, нужно поместить шаблон в директорию resources/views . Можем приступать к написанию самого кода, который позволит нам взаимодействовать с API вконтакте. Поскольку нам нужно будет выполнять HTTP запросы к API, я установил Guzzle. Это HTTP клиент который позволит нам очень просто выполнять HTTP запросы к vkontakte.

Класс для работы с VK API

client_id = $params["client_id"]; $this->client_secret = $params["client_secret"]; $this->redirect_uri = $params["redirect_uri"]; $this->display = $params["display"]; $this->scope = $params["scope"]; $this->response_type = $params["response_type"]; } public function getLoginLink() { $params = [ "client_id" => $this->client_id, "redirect_uri" => $this->redirect_uri, "scope" => $this->scope, "response_type" => $this->response_type ]; return $this->loginUrl . http_build_query($params); } public function getAccessToken($code) { $client = new \GuzzleHttp\Client(); $response = $client->request("POST", $this->queryUrl, [ "form_params" => [ "client_id" => $this->client_id, "client_secret" => $this->client_secret, "redirect_uri" => $this->redirect_uri, "code" => $code, ], "verify" => false, ]); $data = json_decode($response->getBody()); return $data; } public function getAccountInfo($id) { $url = "https://api.vk.com/method/users.get"; $client = new \GuzzleHttp\Client(); $response = $client->request("POST", $url, [ "form_params" => [ "user_ids" => $id, "fields" => "photo_50,counters", "name_case" => "Nom", "access_token" => $this->accessToken ], "verify" => false ]); $data = json_decode($response->getBody()); return $data; } }

Я написал небольшой класс, который пока еще умеет только авторизировать пользователя.
Метод getLoginLink() генерирует ссылку для авторизации, метод getAccessToken() запрашивает токен для доступа и последний метод getAccountInfo() загружает информацию об авторизованом пользователе.

На этом логика приложения завершена и при авторизации пользователя мы получим в сессии массив с данным пользователя и можем отобразить это.
Поскольку я подключил Twig шаблонизатор, шаблоны у меня записываются в html файлы, но вы можете использовать и обычные php файлы или другой шаблонизатор.

Код файла для отображения информации.

{% extends "layout/app.html" %} {% block content %}

{% if account %}

Учетная запись


{% for acc in account %}
{{ acc.first_name }} {{ acc.last_name }}
Друзей: {{ acc.counters.friends }}
Подписчиков: {{ acc.counters.followers }}
{% endfor %} {% else %}

Авторизировать пользователя


Авторизация {% endif %}
{% endblock %}

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

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

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

Итак, сегодня мы рассмотрим пример работы с VK API, в котором будем получать список пользователей c именем «Маша» в городе «Москва». Будем искать Маш в Москве.:)

Первым делом нам нужно создать приложение. Для создания приложения переходим по ссылке (https://new.vk.com/dev -> Создать приложение ).

Вводим название и поскольку мы разбираем пример на PHP используя веб-сервер, выбираем тип приложения — «Веб-сайт «. Указываем адрес вашего сайта и базовый домен(если делаете на локальном веб-сервере, пишем http://localhost ). Нажимаем кнопку «Подключить сайт» и ваше приложение создано, часть пути пройдена.

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

Для получения доступа к методам API, нужно выполнить несколько шагов:

  1. Авторизировать пользователя;
  2. Получить ключ доступа;
  3. Получить access_token;
  4. Выполнить запрос к методу;

4 простых шага, но на деле немного сложнее.

Авторизируем пользователя:

session_start(); $client_id = "1234567"; $redirect_uri = "http://localhost"; $display = "page"; $scope = "friends,groups"; $response_type = "code"; $auth_uri = "https://oauth.vk.com/authorize?client_id={$client_id}&display={$display}& redirect_uri={$redirect_uri}&scope={$scope}&response_type={$response_type}&v=5.52";

Разбираем по пунктам, что же тут написано:

  • $client_id — идентификатор вашего приложения, присвоенный системой;
  • $redirect_uri — страница на которую будет перенаправлен пользователь после успешной авторизации;
  • $display — как отображается страница входа, в данном случае это будет отдельная страница;
  • $scope — разрешения для приложения, указывать через запятую. Полный список ;
  • $response_type — тип ответа, в данном случае будет предоставлен JSON;
  • $auth_uri — формируем строку для авторизации пользователя, передвая нужные параметры;

Получаем access_token:

if(isset($_GET["code"])){ $code = $_GET["code"]; $client_secret = "you_application_password"; $acces_uri = "https://oauth.vk.com/access_token"; $fields = array("client_id" => $client_id, "client_secret" => $client_secret, "redirect_uri" => $redirect_uri, "code" => $code); $acces_uri .= "?client_id={$fields["client_id"]}&"; $acces_uri .= "client_secret={$fields["client_secret"]}&"; $acces_uri .= "redirect_uri={$fields["redirect_uri"]}&"; $acces_uri .= "code={$fields["code"]}"; $res = file_get_contents($acces_uri); $response_string = json_decode($res,true); $_SESSION["token"] = $response_string["access_token"];

Тут все довольно просто, записываем полученный код в переменную $code , формируем ссылку с нужными нам данными — $access_uri . Далее при помощи функции file_get_contents выполняем запрос и в ответ получаем JSON объект который сразу же декодируем в массив. В конце просто полученный токен записываем в переменную сессии. Не очень хороший подход, лучше сразу писать в базу данных, однако цель этого руководства не в этом.

$client_secret — «Защищенный ключ » вашего приложения, без него работать не будет 🙂

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

Формируем:

If (isset($_SESSION["token"])) { $name = "Маша"; $url = $url = "https://api.vk.com/method/users.search?city_id=1&q={$name}&count=1000&access_token={$_SESSION["token"]}"; $res = file_get_contents($url); $users_data = json_decode($res,true); $users_count = array_shift($users_data["response"]); $users_list = $users_data["response"]; }

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

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

Полный список параметров VK API для запроса можете посмотреть в

У меня часто спрашивают, как работать с 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 ВКонтакте доводилось многим из нас, и каждый может сказать: работать с ним напрямую неудобно. Разумеется, было написано множество библиотек, предоставляющих удобный интерфейс работы с ним. Их можно и даже нужно использовать для облегчения работы и ускорения разработки. Сегодня tproger представляет подборку библиотек, набравших на GitHub больше всего звездочек и форков, для почти всех самых популярных ныне языков.

Java

Недавно Вконтакте выпустили официальный SDK для работы с API средствами Java. Страница проекта на GitHub содержит множество примеров, вот один из них, для публикации фотографии на странице пользователя:

PhotoUpload serverResponse = vk.photos().getWallUploadServer(actor).execute(); WallUploadResponse uploadResponse = vk.upload().photoWall(serverResponse.getUploadUrl(), file).execute(); ListPhotoList = vk.photos().saveWallPhoto(actor, uploadResponse.getPhoto()) .server(uploadResponse.getServer()) .hash(uploadResponse.getHash()) .execute(); Photo photo = photoList.get(0); String attachId = "photo" + photo.getOwnerId() + "_" + photo.getId(); GetResponse getResponse = vk.wall().post(actor) .attachments(attachId) .execute();

C#

InTouch - кроссплатформенная библиотека для С#, которая весьма активно развивается . На момент публикации заявлена полная совместимость с версией 5.57 VK API. Вот пример работы с библиотекой:

Var clientId = 12345; // API client Id var clientSecret = "super_secret"; // API client secret var client = new InTouch(clientId, clientSecret); // Authorization works only in Windows (and WinPhone) Store Apps // otherwise you"ll need to set received "access_token" manually // using SetSessionData method. await client.Authorize(); // Gets a list of a user"s friends. var friends = await client.Friends.Get(); if (friends.IsError == false) { ShowFriendsList(friends.Data.Items.Where(friend => friend.Online)); } client.Dispose();

Или даже короче:

Using (var client = new InTouch(12345, "super_secret")) { await client.Authorize(); var friends = await client.Friends.Get(); // ... }

Node.js

Node-vkapi - современная библиотека для JavaScript, основанная на промисах. Она доступна так же в npm:

Npm install node-vkapi --only=prod --save

Вот пример кода, который публикует текст на стену пользователя с помощью node-vkapi:

Const VKApi = require("node-vkapi"); const VK = new VKApi({ app: { id: 1234567890, secret: "app-secret-key" }, auth: { login: "+79871234567", pass: "password123" } }); VK.auth.user({ scope: ["audio", "photos", "friends", "wall", "offline"] }).then(token => { return VK.call("wall.post", { owner_id: token.user_id, friends_only: 0, message: "Post to wall via node-vkapi" }).then(res => { // wall.post response return "https://vk.com/wall" + token.user_id + "_" + res.post_id; }); }).then(link => { // returned data from previous .then console.log("Post was published: " + link); }).catch(error => { // catching errors console.log(error); });

С++

VK API Lib - небольшая библиотека для работы API, написанная на чистом C++. Из зависимостей требуется только Curl. Библиотека предоставляет базовый класс VK::Client с методами авторизации и выполнения запросов к API.

На основе его вы можете создавать свои классы для работы с разделами. В примере приведен класс VK::Messages . Базовый пример использования:

#include "src/api.h" ... VK::Client api; if(api.auth(login, pass, access_token)) { cout << "Auth ok" << endl; cout << "Access token: " << api.access_token() << endl << endl; cout << api.call("wall.post", "owner_id=12345&message=Test"); } else{ cout << "Auth fail" << endl; }

Python

В настоящее время библиотека достаточно активно развивается, однако до этого в её разработке был перерыв примерно на год. Всегда хочется использовать актуальные инструменты, поэтому стоит упомянуть и другую библиотеку для Python . Вот как выглядит загрузка фотографии на сервер с её помощью (комментарии сохранены):

Import vk_api def main(): """ Пример: загрузка фото """ login, password = "[email protected]", "mypassword" vk_session = vk_api.VkApi(login, password) try: vk_session.authorization() except vk_api.AuthorizationError as error_msg: print(error_msg) return """ В VkUpload реализованы методы загрузки файлов в ВК. (Не все, если что-то понадобится - могу дописать) """ upload = vk_api.VkUpload(vk_session) photo = upload.photo(# Подставьте свои данные "D:/downloads/tube.jpg", album_id=200851098, group_id=74030368) vk_photo_url = "https://vk.com/photo{}_{}".format(photo["owner_id"], photo["id"]) print(photo, "\nLink: ", vk_photo_url) if __name__ == "__main__": main()

PHP

Библиотека на PHP, использующая, по словам автора, «сахалинские технологии», чтобы облегчить труд разработчика. Написана в ООП-стиле. Одна из самых крутых ее фич - генерация на основе запроса на PHP готового кода для специального метода ВК execute.

Пример просмотра последних 200 сообщений:

//MESSAGES $data = $vk->request("messages.get", ["count" => 200]); $userMap = ; $userCache = ; $user = new \getjump\Vk\Wrapper\User($vk); $fetchData = function($id) use($user, &$userMap, &$userCache) { if(!isset($userMap[$id])) { $userMap[$id] = sizeof($userCache); $userCache = $user->get($id)->response->get(); } return $userCache[$userMap[$id]]; }; //REQUEST WILL ISSUE JUST HERE! SINCE __get overrided $data->each(function($key, $value) use($fetchData) { $user = $fetchData($value->user_id); printf("[%s] %s
", $user->getName(), $value->body); return; });

Ruby

vkontakte_api - ruby-адаптер для ВКонтакте API. Он позволяет вызывать методы API, загружать файлы на сервера ВКонтакте, а также поддерживает все 3 доступных способа авторизации (при этом позволяя использовать стороннее решение).

Работать с ним можно, например, так:

# создаем клиент @vk = VkontakteApi::Client.new # и вызываем методы API @vk.users.get(uid: 1) # в ruby принято использовать snake_case в названиях методов, # поэтому likes.getList становится likes.get_list @vk.likes.get_list # также названия методов, которые возвращают "1" или "0", # заканчиваются на "?", а возвращаемые значения приводятся # к true или false @vk.is_app_user? # => false # если ВКонтакте ожидает получить параметр в виде списка, # разделенного запятыми, то его можно передать массивом users = @vk.users.get(uids: ) # большинство методов возвращает структуры Hashie::Mash # и массивы из них users.first.uid # => 1 users.first.first_name # => "Павел" users.first.last_name # => "Дуров" # если метод, возвращающий массив, вызывается с блоком, # то блок будет выполнен для каждого элемента, # и метод вернет обработанный массив fields = [:first_name, :last_name, :screen_name] @vk.friends.get(uid: 2, fields: fields) do |friend| "#{friend.first_name} "#{friend.screen_name}" #{friend.last_name}" end # => ["Павел "durov" Дуров"]

Perl

Простенькая, полностью асинхронная библиотека AnyEvent::VK , выполняющая все запросы по https. По сути является клиентом. Автор рекомендует использовать Async::Chain для комбинирования вложенных колбеков.

Use AnyEvent; use AnyEvent::VK; use Data::Dumper; my $vk = AnyEvent::VK->new(app_id => "Your APP ID", email => "Email/Mobile of user", password => "User Password", scope => "Application permissions",); # or my $vk = AnyEvent::VK->new(app_id => "Your APP ID", email => "Email/Mobile of user", password => "User Password", scope => "Application permissions", token => "Your access_token", expires => "Token expires timestamp", user_id => "user_id",); my $cv = AE::cv; $cv->begin; $vk->auth(sub { my $success = shift; if ($success) { my ($token, $expires_in, $user_id) = @_; $vk->request("users.get", { user_ids => "1", fields => "bdate,sex,city,verified", }, sub { my $response = shift; if ($response) { my $meta = shift; say Dumper($response); } else { my $meta = shift; warn "Request failed"; say Dumper($meta); } $cv->end; }); } else { my ($stage, $headers, $body, $cookie) = @_; warn "Auth failed"; say Dumper(@_); } $cv->end; }); $cv->recv;

Для мобильной разработки

Android (Java)

Еще одна официальная библиотека , на этот раз - для Android. Написана на Java и позволяет сильно упростить работу с API ВКонтакте из этого языка.

Пример отправки запроса:

Request.executeWithListener(new VKRequestListener() { @Override public void onComplete(VKResponse response) { //Do complete stuff } @Override public void onError(VKError error) { //Do error stuff } @Override public void onProgress(VKRequest.VKProgressType progressType, long bytesLoaded, long bytesTotal) { //I don"t really believe in progress } @Override public void attemptFailed(VKRequest request, int attemptNumber, int totalAttempts) { //More luck next time } });

Windows Phone (C#)

Последняя в этом списке официальная разработка: написанная на C# базовая библиотека для разработки на WP, похожая по функциональности на свои аналоги под Android и iOS.

Отправка запроса на список друзей:

Private void GetUserInfoButton_Click(object sender, RoutedEventArgs e) { VKRequest.Dispatch>(new VKRequestParameters("users.get", "fields", "photo_200, city, country"), (res) => { if (res.ResultCode == VKResultCode.Succeeded) { VKExecute.ExecuteOnUIThread(() => { var user = res.Data; userImage.Source = new BitmapImage(new Uri(user.photo_200, UriKind.Absolute)); userInfo.Text = user.first_name + " " + user.last_name; }); } }); }

iOS (Objective C)

Официальная библиотека от ВКонтакте, предназначенная для написания приложений под iOS. Написана на Objective-C.

Пример кода с отправкой запроса:

; } else { NSLog(@"VK error: %@", error); } }];

Для хипстеров

Rust

На Github есть библиотека и для этого языка - vkrs . Она не слишком активно развивается, но это уже хоть что-то. Вот так она выглядит в деле:

Extern crate vkrs; use std::{env, io}; use vkrs::*; fn main() { let api = api::Client::new(); let oauth = api.auth(env::var("VK_APP_ID").unwrap(), env::var("VK_APP_SECRET").unwrap()); let auth_uri = oauth.auth_uri(auth::Permission::Audio).unwrap(); // Or if you want to get permissions for specific request: // let auth_uri = oauth.auth_uri_for::(); println!("Go to {} and enter code below...", auth_uri); let inp = io::stdin(); let code = { let mut buf = String::new(); inp.read_line(&mut buf).unwrap(); buf }; // You may want to save this token for future use to avoid asking user // to authorize the app on each run. let token = oauth.request_token(code.trim()).unwrap(); // The access token is JSON serializable with serde, so you can do it this way: // File::create(TOKEN_FILE).ok().map(|mut f| serde_json::to_writer(&mut f, &token).ok()).unwrap(); // // And then you can load it again: // let token: auth::AccessToken = File::open(TOKEN_FILE).ok().and_then(|mut f| serde_json::from_reader(&mut f).ok()).unwrap(); let songs = api.get(Some(&token), audio::Search::new() .q("Poets Of The Fall") .performer_only(true) .count(200)) .unwrap(); for song in &songs.items { println!("{:?}", song); } }