oa-oauth 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/omniauth/oauth.rb +1 -0
- data/lib/omniauth/strategies/vkontakte.rb +84 -0
- metadata +33 -21
data/lib/omniauth/oauth.rb
CHANGED
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'omniauth/oauth'
|
2
|
+
require 'multi_json'
|
3
|
+
|
4
|
+
module OmniAuth
|
5
|
+
module Strategies
|
6
|
+
#
|
7
|
+
# Authenticate to Vkontakte utilizing OAuth 2.0 and retrieve
|
8
|
+
# basic user information.
|
9
|
+
# documentation available here:
|
10
|
+
# http://vkontakte.ru/developers.php?o=-17680044&p=Authorization&s=0
|
11
|
+
#
|
12
|
+
# @example Basic Usage
|
13
|
+
# use OmniAuth::Strategies::Vkontakte, 'API Key', 'Secret Key'
|
14
|
+
class Vkontakte < OAuth2
|
15
|
+
# @param [Rack Application] app standard middleware application parameter
|
16
|
+
# @param [String] api_key the application id as [registered in Vkontakte]
|
17
|
+
# @param [String] secret_key the application secret as [registered in Vkontakte]
|
18
|
+
def initialize(app, api_key = nil, secret_key = nil, options = {}, &block)
|
19
|
+
client_options = {
|
20
|
+
:site => 'https://vkontakte.ru',
|
21
|
+
:authorize_url => 'http://api.vkontakte.ru/oauth/authorize',
|
22
|
+
:access_token_url => 'https://api.vkontakte.ru/oauth/token'
|
23
|
+
}
|
24
|
+
|
25
|
+
super(app, :vkontakte, api_key, secret_key, client_options, options, &block)
|
26
|
+
end
|
27
|
+
|
28
|
+
protected
|
29
|
+
|
30
|
+
def user_data
|
31
|
+
# http://vkontakte.ru/developers.php?o=-17680044&p=Description+of+Fields+of+the+fields+Parameter
|
32
|
+
@fields ||= ['uid', 'first_name', 'last_name', 'nickname', 'domain', 'sex', 'city', 'country', 'timezone', 'photo', 'photo_big']
|
33
|
+
|
34
|
+
# http://vkontakte.ru/developers.php?o=-1&p=getProfiles
|
35
|
+
@data ||= MultiJson.decode(@access_token.get("https://api.vkontakte.ru/method/getProfiles?uid=#{@access_token['user_id']}&fields=#{@fields.join(',')}&access_token=#{@access_token.token}"))['response'][0]
|
36
|
+
|
37
|
+
# we need these 2 additional requests since vkontakte returns only ids of the City and Country
|
38
|
+
# http://vkontakte.ru/developers.php?o=-17680044&p=getCities
|
39
|
+
@city ||= MultiJson.decode(@access_token.get("https://api.vkontakte.ru/method/getCities?cids=#{@data['city']}&access_token=#{@access_token.token}"))['response'][0]['name']
|
40
|
+
|
41
|
+
# http://vkontakte.ru/developers.php?o=-17680044&p=getCountries
|
42
|
+
@country ||= MultiJson.decode(@access_token.get("https://api.vkontakte.ru/method/getCountries?cids=#{@data['country']}&access_token=#{@access_token}"))['response'][0]['name']
|
43
|
+
end
|
44
|
+
|
45
|
+
def request_phase
|
46
|
+
options[:response_type] ||= 'code'
|
47
|
+
super
|
48
|
+
end
|
49
|
+
|
50
|
+
def user_info
|
51
|
+
{
|
52
|
+
'firstname' => @data['first_name'],
|
53
|
+
'last_name' => @data['last_name'],
|
54
|
+
'name' => "#{@data['first_name']} #{@data['last_name']}",
|
55
|
+
'nickname' => @data['nickname'],
|
56
|
+
'image' => @data['photo'],
|
57
|
+
'location' => "#{@country}, #{@city}",
|
58
|
+
'urls' => {
|
59
|
+
'Vkontakte' => "http://vkontakte.ru/#{@data['domain']}"
|
60
|
+
}
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
64
|
+
def user_hash
|
65
|
+
{
|
66
|
+
"user_hash" => {
|
67
|
+
"gender" => @data["sex"],
|
68
|
+
"timezone" => @data["timezone"],
|
69
|
+
"photo_big" => @data["photo_big"] # 200px maximum resolution of the avatar (http://vkontakte.ru/developers.php?o=-17680044&p=Description+of+Fields+of+the+fields+Parameter)
|
70
|
+
}
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
def auth_hash
|
75
|
+
user_data # process user's info
|
76
|
+
OmniAuth::Utils.deep_merge(super, {
|
77
|
+
'uid' => @data['uid'],
|
78
|
+
'user_info' => user_info,
|
79
|
+
'extra' => user_hash
|
80
|
+
})
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: oa-oauth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.2.
|
5
|
+
version: 0.2.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Michael Bleigh
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-04-
|
13
|
+
date: 2011-04-21 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - "="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.2.
|
23
|
+
version: 0.2.3
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: *id001
|
@@ -29,9 +29,9 @@ dependencies:
|
|
29
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
|
-
- -
|
32
|
+
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 0.0.
|
34
|
+
version: 0.0.5
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: *id002
|
@@ -80,8 +80,19 @@ dependencies:
|
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: *id006
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
|
-
name:
|
83
|
+
name: addressable
|
84
84
|
requirement: &id007 !ruby/object:Gem::Requirement
|
85
|
+
none: false
|
86
|
+
requirements:
|
87
|
+
- - "="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.2.4
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: *id007
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: rake
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
85
96
|
none: false
|
86
97
|
requirements:
|
87
98
|
- - ">="
|
@@ -89,10 +100,10 @@ dependencies:
|
|
89
100
|
version: "0"
|
90
101
|
type: :development
|
91
102
|
prerelease: false
|
92
|
-
version_requirements: *
|
103
|
+
version_requirements: *id008
|
93
104
|
- !ruby/object:Gem::Dependency
|
94
105
|
name: mg
|
95
|
-
requirement: &
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
96
107
|
none: false
|
97
108
|
requirements:
|
98
109
|
- - ~>
|
@@ -100,10 +111,10 @@ dependencies:
|
|
100
111
|
version: 0.0.8
|
101
112
|
type: :development
|
102
113
|
prerelease: false
|
103
|
-
version_requirements: *
|
114
|
+
version_requirements: *id009
|
104
115
|
- !ruby/object:Gem::Dependency
|
105
116
|
name: rspec
|
106
|
-
requirement: &
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
107
118
|
none: false
|
108
119
|
requirements:
|
109
120
|
- - ~>
|
@@ -111,10 +122,10 @@ dependencies:
|
|
111
122
|
version: 1.3.0
|
112
123
|
type: :development
|
113
124
|
prerelease: false
|
114
|
-
version_requirements: *
|
125
|
+
version_requirements: *id010
|
115
126
|
- !ruby/object:Gem::Dependency
|
116
127
|
name: webmock
|
117
|
-
requirement: &
|
128
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
118
129
|
none: false
|
119
130
|
requirements:
|
120
131
|
- - ~>
|
@@ -122,10 +133,10 @@ dependencies:
|
|
122
133
|
version: 1.3.4
|
123
134
|
type: :development
|
124
135
|
prerelease: false
|
125
|
-
version_requirements: *
|
136
|
+
version_requirements: *id011
|
126
137
|
- !ruby/object:Gem::Dependency
|
127
138
|
name: rack-test
|
128
|
-
requirement: &
|
139
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
129
140
|
none: false
|
130
141
|
requirements:
|
131
142
|
- - ~>
|
@@ -133,10 +144,10 @@ dependencies:
|
|
133
144
|
version: 0.5.4
|
134
145
|
type: :development
|
135
146
|
prerelease: false
|
136
|
-
version_requirements: *
|
147
|
+
version_requirements: *id012
|
137
148
|
- !ruby/object:Gem::Dependency
|
138
149
|
name: json_pure
|
139
|
-
requirement: &
|
150
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
140
151
|
none: false
|
141
152
|
requirements:
|
142
153
|
- - ~>
|
@@ -144,10 +155,10 @@ dependencies:
|
|
144
155
|
version: 1.5.1
|
145
156
|
type: :development
|
146
157
|
prerelease: false
|
147
|
-
version_requirements: *
|
158
|
+
version_requirements: *id013
|
148
159
|
- !ruby/object:Gem::Dependency
|
149
160
|
name: evernote
|
150
|
-
requirement: &
|
161
|
+
requirement: &id014 !ruby/object:Gem::Requirement
|
151
162
|
none: false
|
152
163
|
requirements:
|
153
164
|
- - ~>
|
@@ -155,7 +166,7 @@ dependencies:
|
|
155
166
|
version: 0.9.0
|
156
167
|
type: :development
|
157
168
|
prerelease: false
|
158
|
-
version_requirements: *
|
169
|
+
version_requirements: *id014
|
159
170
|
description: OAuth strategies for OmniAuth.
|
160
171
|
email: michael@intridea.com
|
161
172
|
executables: []
|
@@ -200,6 +211,7 @@ files:
|
|
200
211
|
- lib/omniauth/strategies/twitter.rb
|
201
212
|
- lib/omniauth/strategies/type_pad.rb
|
202
213
|
- lib/omniauth/strategies/vimeo.rb
|
214
|
+
- lib/omniauth/strategies/vkontakte.rb
|
203
215
|
- lib/omniauth/strategies/xauth.rb
|
204
216
|
- lib/omniauth/strategies/yahoo.rb
|
205
217
|
- lib/omniauth/strategies/you_tube.rb
|
@@ -219,7 +231,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
219
231
|
requirements:
|
220
232
|
- - ">="
|
221
233
|
- !ruby/object:Gem::Version
|
222
|
-
hash: -
|
234
|
+
hash: -2020535135575110083
|
223
235
|
segments:
|
224
236
|
- 0
|
225
237
|
version: "0"
|
@@ -228,7 +240,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
228
240
|
requirements:
|
229
241
|
- - ">="
|
230
242
|
- !ruby/object:Gem::Version
|
231
|
-
hash: -
|
243
|
+
hash: -2020535135575110083
|
232
244
|
segments:
|
233
245
|
- 0
|
234
246
|
version: "0"
|