Лучшие библиотеки для работы с VK API на C++, Java, Python и других языках
Работать с API ВКонтакте доводилось многим из нас, и каждый может сказать: работать с ним напрямую неудобно. Разумеется, было написано множество библиотек, предоставляющих удобный интерфейс работы с ним. Их можно и даже нужно использовать для облегчения работы и ускорения разработки. Сегодня tproger представляет подборку библиотек, набравших на GitHub больше всего звездочек и форков, для почти всех самых популярных ныне языков.
Java
Недавно Вконтакте выпустили официальный SDK для работы с API средствами Java. Страница проекта на GitHub содержит множество примеров, вот один из них, для публикации фотографии на странице пользователя:
PhotoUpload serverResponse = vk.photos().getWallUploadServer(actor).execute(); WallUploadResponse uploadResponse = vk.upload().photoWall(serverResponse.getUploadUrl(), file).execute(); List photoList = 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 else
Python
>>> import vk >>> session = vk.Session() >>> api = vk.API(session) >>> api.users.get(user_ids=1) []
В настоящее время библиотека достаточно активно развивается, однако до этого в её разработке был перерыв примерно на год. Всегда хочется использовать актуальные инструменты, поэтому стоит упомянуть и другую библиотеку для Python. Вот как выглядит загрузка фотографии на сервер с её помощью (комментарии сохранены):
PHP
Библиотека на PHP, использующая, по словам автора, «сахалинские технологии», чтобы облегчить труд разработчика. Написана в ООП-стиле. Одна из самых крутых ее фич — генерация на основе запроса на PHP готового кода для специального метода ВК execute.
Пример просмотра последних 200 сообщений:
//MESSAGES $data = $vk->request(‘messages.get’, [‘count’ => 200]); $userMap = []; $userCache = []; $user = new getjumpVkWrapperUser($vk); $fetchData = function($id) use($user, $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 доступных способа авторизации (при этом позволяя использовать стороннее решение).
Работать с ним можно, например, так:
Perl
Простенькая, полностью асинхронная библиотека AnyEvent::VK, выполняющая все запросы по https. По сути является клиентом. Автор рекомендует использовать Async::Chain для комбинирования вложенных колбеков.
Для мобильной разработки
Android (Java)
Еще одна официальная библиотека, на этот раз — для Android. Написана на Java и позволяет сильно упростить работу с API ВКонтакте из этого языка.
Пример отправки запроса:
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[0]; 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.
Пример кода с отправкой запроса:
Для хипстеров
Rust
На Github есть библиотека и для этого языка — vkrs. Она не слишком активно развивается, но это уже хоть что-то. Вот так она выглядит в деле:
extern crate vkrs; use std::; 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::<audio::Search>(); println!(«Go to <>and enter code below. «, auth_uri); let inp = io::stdin(); let code = < let mut buf = String::new(); inp.read_line( 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(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( let songs = api.get(Some(Poets Of The Fall») .performer_only(true) .count(200)) .unwrap(); for song in println!(«», song); > >
Golang
Как ни странно, была написана обёртка для VK API и на языке Go. Так же, как и остальные, она доступна на Github. Hello World на ней выглядит так:
package main import ( «github.com/urShadow/go-vk-api» «log» «strconv» ) func main() < api := vk.New(«ru») // set http proxy //api.Proxy = «localhost:8080» err := api.Init(«TOKEN») if err != nil < log.Fatalln(err) >api.OnNewMessage(func(msg *vk.LPMessage) < if msg.Flags if msg.Text == «/hello» < api.Messages.Send(vk.RequestParams< «peer_id»: strconv.FormatInt(msg.FromID, 10), «message»: «Hello!», «forward_messages»: strconv.FormatInt(msg.ID, 10), >) > > >) api.RunLongPoll() >
Если для какого-либо языка вы знаете более актуальную или функциональную библиотеку — пишите в комментарии, мы обязательно обновим статью.
Источник: tproger.ru
Описание и примеры работы с API ВКонтакте
Телеграм-канал Программист и бизнес.
Каждый день интересные истории, как программист строит бизнес.
Эта статья не для программистов (они и так уже всё это знают), а для тех, кто только подходит к теме программирования. Или для тех, кто просто услышал термин VK API, и хочет понимать, что это такое.
Что такое API
Сайт Вконтакте с технической стороны представляет собой сложный комплекс программ, которые работают на серверах компании. Результат их работы отображается в браузерах или мобильных приложениях в виде знакомого всем сайта социальной сети. Пользователи могут взаимодействовать с сайтом – публиковать статьи, проводить поиск, подписываться на сообщества и так далее. Все эти действия обеспечиваются программами, которые работают совершенно незаметно для посетителей.
Этих программ (скриптов, как их называют программисты) может быть очень много, и они должны взаимодействовать друг с другом. Для этого разработаны специальные правила и протоколы, следуя которым, отдельные скрипты имеют возможность отвечать на вызовы и получать ответы от других. В результате всё огромное множество разнообразных скриптов работает как единое целое.
Совокупность этих правил и составляет единый интерфейс взаимодействия со сложной программной системой. Его называют API – Application Programming Interface.
Взаимодействие программных модулей именно через библиотеку API, это общепринятая норма. Без такого механизма строить сложные программные системы было бы просто невозможно. Ведь тогда каждый скрипт имел бы собственные правила приёма внешних команд и выдачи результатов.
Взаимодействие каждых двух отдельных скриптов нужно было бы программировать отдельно, и весь проект был бы похоронен под огромной кучей разнородных правил. Разобраться в них не было бы никакой возможности. Если же в проект изначально закладывается принцип работы модулей только через API, тогда всё многообразие взаимодействий сводится к нескольким несложным правилам, которые универсальны и подходят для любого скрипта. Это очень удобно.
Чем же этот механизм может быть полезен простому программисту, который не состоит в штате компании Вконтакте и хочет просто написать какой-нибудь полезный скрипт для себя?
Где найти документацию по VK Api
Соцсеть в своей документации предлагает подробное описание своего API для сторонних разработчиков. Главная страница этой документации располагается вот здесь: https://vk.com/dev/manuals. Тут описаны программные объекты и их методы, перечень возвращаемых кодов и ошибок, права доступа, шаблоны запросов и так далее.
Программист, желающий разработать какое-либо приложение (подключаемое внутри ВК либо работающее на отдельном сайте) может в коде своей программы предусмотреть вызовы методов ВК, используя эти самые правила взаимодействия API. Это даст возможность обращаться к функционалу социальной сети Вконтакте.
Например, можно получать список подписчиков того или иного сообщества, делать массовые рассылки сообщений, публиковать новые записи, и так далее. Возможности здесь очень широкие. Именно на возможностях API ВК основаны многие полезные приложения. Например, музыкальные плееры для проигрывания музыки из страниц друзей, разнообразные игры, счётчики «Мои гости», альтернативные мобильные клиенты, такие как VK Settings, VK Coffee, Kate Mobile и так далее.
Полноценной работе с API Вконтакте посвящены многочисленные статьи в Интернете, эта информация очень обширна. Мы здесь покажем решение только двух конкретных задач.
Примеры работы API VK на PHP
Сначала нужно создать новое приложение, которое будет подключаться к ВК. Это делается на странице по ссылке https://vk.com/apps?act=manage. Пройдя по ней, нужно кликнуть по кнопке «Создать приложение».
Далее нужно выбрать тип создаваемого приложения: встраиваемое, отдельное (stand-alone), или на сайте. Если выбираете последний вариант, то нужно будет ввести адрес сайта и базовый домен.
В любом из трёх случаев после создания появится страница новой программы, и потребуется открыть вкладку «Настройки». Там вам понадобится два параметра: ID приложения и защищённый ключ.
Теперь можно начинать программирование функции авторизации пользователя. Её код может быть таким:
Этот код выводит на экран ссылку для открытия окна авторизации пользователя.
А этот код получает универсальный токен доступа access_token:
Программисты, знакомые с языком PHP увидят, что этот код, используя параметры «ID приложения» и «Защищённый ключ», обращается к специальной утилите oauth.vk.com, которая возвращает токен доступа. Он необходим для успешной авторизации пользователя.
Изучение работы с API Вконтакте может занять немало времени, так как он предлагает много объектов и методов. Но усилия стоят того – появится возможность писать любые приложения и игры, использующие движок ВК. Причём нет никакой разницы, на каком языке вы будете это делать – PHP, Pithon, JavaScript, C# или любой другой. Программному интерфейсу это безразлично, нужно только, чтобы соблюдались правила составления и отправки запросов.
Источник: greatchat.ru