This is the unofficial OmniAuth strategy for authenticating to VKontakte via OAuth. To use it, you'll need to sign up for an OAuth2 Application ID and Secret on the Vkontakte Developers Page.
Add to your Gemfile
:
gem 'omniauth-vkontakte'
Then bundle install
OmniAuth::Strategies::Vkontakte
is simply a Rack middleware.
Here's a quick example, adding the middleware to a Rails app in config/initializers/omniauth.rb
:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :vkontakte, ENV['VK_API_ID'], ENV['VK_API_SECRET']
end
You can configure several options, which you pass in to the provider
method via a Hash
:
scope
: a comma-separated list of access permissions you want to request from the user. Read the Vkontakte docs for more detailsdisplay
: the display context to show the authentication page. Valid options includepage
,popup
andmobile
.lang
: specifies the language. Optional options includeru
,ua
,be
,en
,es
,fi
,de
,it
.image_size
: defines the size of the user's image. Valid options includemini
(50x50),bigger
(100x100),bigger_x2
(200x200),original
(200x*) andoriginal_x2
(400x*). Default ismini
.info_fields
: specify which fields should be added to AuthHash when getting the user's info. Value should be a comma-separated string as per http://vk.com/dev/fields.redirect_url
: URL where code will be passed. This URL shall be a part of the domain specified in application settings http://vk.com/dev/auth_sites.https
: 1 - allows you to receive https links to photos and other media. 0 - return an http links (the default).
Here's an example of a possible configuration:
use OmniAuth::Builder do
provider :vkontakte, ENV['VKONTAKTE_KEY'], ENV['VKONTAKTE_SECRET'],
scope: 'friends,audio,photos',
display: 'popup',
lang: 'en',
https: 1,
image_size: 'original'
end
Here's an example Auth Hash available in request.env['omniauth.auth']
:
{"provider"=>"vkontakte",
"uid"=>"1",
"info"=>
{"name"=>"Павел Дуров",
"nickname"=>"",
"first_name"=>"Павел",
"last_name"=>"Дуров",
"image"=>"http://cs7001.vk.me/c7003/v7003079/374b/53lwetwOxD8.jpg",
"location"=>"Росiя, Санкт-Петербург",
"urls"=>{"Vkontakte"=>"http://vk.com/durov"}},
"credentials"=>
{"token"=>
"187041a618229fdaf16613e96e1caabc1e86e46bbfad228de41520e63fe45873684c365a14417289599f3",
"expires_at"=>1381826003,
"expires"=>true},
"extra"=>
{"raw_info"=>
{"id"=>1,
"first_name"=>"Павел",
"last_name"=>"Дуров",
"sex"=>2,
"nickname"=>"",
"screen_name"=>"durov",
"bdate"=>"10.10.1984",
"city"=>{"id"=>2, "title"=>"Санкт-Петербург"},
"country"=>{"id"=>1, "title"=>"Росiя"},
"photo"=>"http://cs7001.vk.me/c7003/v7003079/374b/53lwetwOxD8.jpg",
"photo_big"=>"http://cs7001.vk.me/c7003/v7003736/3a08/mEqSflTauxA.jpg",
"online"=>1,
"online_app"=>"3140623",
"online_mobile"=>1}}}
The precise information available may depend on the permissions which you request.
Tested with the following Ruby versions:
- Ruby MRI (2.7.0+)
- JRuby (9.3.0+)
- Fork it (https://github.com/mamantoha/omniauth-vkontakte/fork)
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Copyright: 2011-2023 Anton Maminov (anton.maminov@gmail.com)
This library is distributed under the MIT license. Please see the LICENSE file.