SmartVkApi
Библиотека, обеспечивающая по-настоящему удобный и простой интерфейс для работы с API социальной сети "Вконтакте".
Что еще один?
Да, в некотором роде. Но не совсем.
- Почти все гемы для работы с VK API, которые можно найти на rubygems.org, давно не обновлялись.
- Один из самых приятно реализованных и более или менее актуальных тянет за собой количество зависимостей, которое ставит в тупик.
Поэтому при разработке этого гема используются три простых принципа:
- Он должен быть максимально удобным в использовании;
- Он должен быть настолько "тонким" по отношению к API, насколько это вообще возможно сделать, не жертвуя первым пунктом;
- Он должен тянуть за собой только необходимый минимум зависимостей, в идеале - ни одной;
Как установить?
Добавьте в Gemfile вашего приложения:
gem 'smart_vk_api'
После чего запустите:
$ bundle install
Или просто установите гем вручную:
$ gem install smart_vk_api
Прямое использование API
В простейшем случае можно вызвать произвольный метод VK API и передать ему параметры следующим образом:
SmartVkApi.call('users.get', :user_ids => 'kimrgrey') # [{:uid=>3710412, ...}]
Для вызова нескольких методов разумно создать враппер один раз и использовать его повторно:
vk = SmartVkApi.vk
vk.call('users.get', :user_ids => 'kimrgrey') # [{:uid=>3710412, ...}]
vk.call('photos.get', :owner_id => '3710412', :album_id => 'wall')
По умолчанию, access_token
не передается, так что для вызова доступны только публичные методы. При попытке вызвать метод, требующий наличие токена, возникнет исключение SmartVkApi::MethodCallError
. Например:
SmartVkApi.call('wall.get', :owner_id => '3710412') # SmartVkApi::MethodCallError: {"error":{..., "error_msg":"Access denied: user hid his wall from accessing from outside"}}
Чтобы вызвать приватные методы, можно задать глобальный конфиг, токен из которого будет использоваться по умолчанию, если он задан:
SmartVkApi.configure do |config|
config.access_token = ACCESS_TOKEN
end
Если при этом передать другой access_token
в качестве параметра для метода call
, ему будет отдано предпочтение:
SmartVkApi.call('users.get', :user_ids => 'kimrgrey', :access_token => ANOTHER_ACCESS_TOKEN)
Проксирующий объект
Вместо прямых обращений к API через передачу имени метода в качестве параметра для call
можно использовать более удобный вариант, позволяющий вызывать методы VK API как собственные методы враппера. Пример:
vk = SmartVkApi.vk
vk.users.get(:user_ids => 'kimrgrey')
Токен доступа, как и для прямых вызовов, можно задать в конфиге или передать в качестве параметра метода.
vk = SmartVkApi.vk
vk.users.get(:user_ids => 'kimrgrey', :access_token => ACCESS_TOKEN)
Как помочь в разработке?
Все как обычно:
- Сделайте форк (https://github.com/kimrgrey/smart_vk_api/fork)
- Добавьте ветку (
git checkout -b my-new-feature
) - Сделайте коммит (
git commit -am 'Add some feature'
) - Сделайте пуш (
git push origin my-new-feature
) - Пришлите pull request