oa-oauth 0.2.0.beta4 → 0.2.0.beta5
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/oa-oauth.rb +1 -0
- data/lib/omniauth/oauth.rb +1 -0
- data/lib/omniauth/strategies/foursquare.rb +35 -30
- data/lib/omniauth/strategies/google.rb +4 -2
- data/lib/omniauth/strategies/linked_in.rb +12 -6
- data/lib/omniauth/strategies/miso.rb +41 -0
- data/lib/omniauth/strategies/oauth.rb +15 -13
- data/lib/omniauth/strategies/oauth2.rb +3 -3
- data/lib/omniauth/strategies/trip_it.rb +0 -13
- metadata +6 -4
data/lib/oa-oauth.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'omniauth/oauth'
|
data/lib/omniauth/oauth.rb
CHANGED
@@ -3,50 +3,55 @@ require 'multi_json'
|
|
3
3
|
|
4
4
|
module OmniAuth
|
5
5
|
module Strategies
|
6
|
-
class Foursquare <
|
6
|
+
class Foursquare < OAuth2
|
7
7
|
# Initialize the middleware
|
8
8
|
#
|
9
9
|
# @option options [Boolean, true] :sign_in When true, use a sign-in flow instead of the authorization flow.
|
10
10
|
# @option options [Boolean, false] :mobile When true, use the mobile sign-in interface.
|
11
|
-
def initialize(app,
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
client_options[:authorize_path] = auth_path
|
18
|
-
|
19
|
-
super(app, :foursquare, consumer_key, consumer_secret, client_options, options, &block)
|
11
|
+
def initialize(app, client_id = nil, client_secret = nil, options = {}, &block)
|
12
|
+
super(app, :foursquare, client_id, client_secret, {
|
13
|
+
:site => "https://api.foursquare.com/v2",
|
14
|
+
:authorize_url => "https://foursquare.com/oauth2/authenticate",
|
15
|
+
:access_token_url => "https://foursquare.com/oauth2/access_token"
|
16
|
+
}, options, &block)
|
20
17
|
end
|
21
18
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
19
|
+
def user_data
|
20
|
+
@data ||= MultiJson.decode(@access_token.get(client.site+'/users/self', {'oauth_token' => @access_token.token}))
|
21
|
+
end
|
22
|
+
|
23
|
+
def request_phase
|
24
|
+
options[:response_type] ||= 'code'
|
25
|
+
super
|
26
|
+
end
|
27
|
+
|
28
|
+
def callback_phase
|
29
|
+
options[:grant_type] ||= 'authorization_code'
|
30
|
+
super
|
28
31
|
end
|
29
32
|
|
30
33
|
def user_info
|
31
|
-
user_hash = self.user_hash
|
32
|
-
|
33
34
|
{
|
34
|
-
'nickname' =>
|
35
|
-
'first_name' =>
|
36
|
-
'last_name' =>
|
37
|
-
'email' =>
|
38
|
-
'name' => "#{
|
39
|
-
# 'location' =>
|
40
|
-
'image' =>
|
41
|
-
# 'description' =>
|
42
|
-
'phone' =>
|
35
|
+
'nickname' => user_data['response']['user']['contact']['twitter'],
|
36
|
+
'first_name' => user_data['response']['user']['firstName'],
|
37
|
+
'last_name' => user_data['response']['user']['lastName'],
|
38
|
+
'email' => user_data['response']['user']['contact']['twitter'],
|
39
|
+
'name' => "#{user_data['response']['user']['firstName']} #{user_data['response']['user']['lastName']}".strip,
|
40
|
+
# 'location' => user_data['response']['user']['location'],
|
41
|
+
'image' => user_data['response']['user']['photo'],
|
42
|
+
# 'description' => user_data['response']['user']['description'],
|
43
|
+
'phone' => user_data['response']['user']['contact']['phone'],
|
43
44
|
'urls' => {}
|
44
45
|
}
|
45
46
|
end
|
46
47
|
|
47
|
-
def
|
48
|
-
|
48
|
+
def auth_hash
|
49
|
+
OmniAuth::Utils.deep_merge(super, {
|
50
|
+
'uid' => user_data['response']['user']['id'],
|
51
|
+
'user_info' => user_info,
|
52
|
+
'extra' => {'user_hash' => user_data['response']['user']}
|
53
|
+
})
|
49
54
|
end
|
50
55
|
end
|
51
56
|
end
|
52
|
-
end
|
57
|
+
end
|
@@ -20,8 +20,10 @@ module OmniAuth
|
|
20
20
|
:authorize_path => '/accounts/OAuthAuthorizeToken'
|
21
21
|
}
|
22
22
|
|
23
|
-
|
24
|
-
|
23
|
+
google_contacts_auth = "http://www.google.com/m8/feeds"
|
24
|
+
options[:scope] ||= google_contacts_auth
|
25
|
+
options[:scope] << " #{google_contacts_auth}" unless options[:scope].include?(google_contacts_auth)
|
26
|
+
|
25
27
|
super(app, :google, consumer_key, consumer_secret, client_options, options)
|
26
28
|
end
|
27
29
|
|
@@ -5,12 +5,18 @@ module OmniAuth
|
|
5
5
|
module Strategies
|
6
6
|
class LinkedIn < OmniAuth::Strategies::OAuth
|
7
7
|
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
8
|
+
client_options = {
|
9
|
+
:site => 'https://api.linkedin.com',
|
10
|
+
:request_token_path => '/uas/oauth/requestToken',
|
11
|
+
:access_token_path => '/uas/oauth/accessToken',
|
12
|
+
:authorize_path => '/uas/oauth/authorize',
|
13
|
+
:scheme => :header
|
14
|
+
}
|
15
|
+
|
16
|
+
client_options[:authorize_path] = '/uas/oauth/authenticate' unless options[:sign_in] == false
|
17
|
+
|
18
|
+
'/uas/oauth/authorize'
|
19
|
+
super(app, :linked_in, consumer_key, consumer_secret, client_options, options, &block)
|
14
20
|
end
|
15
21
|
|
16
22
|
def auth_hash
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'omniauth/oauth'
|
2
|
+
require 'multi_json'
|
3
|
+
|
4
|
+
module OmniAuth
|
5
|
+
module Strategies
|
6
|
+
#
|
7
|
+
# Authenticate to Miso via OAuth and retrieve basic
|
8
|
+
# user information.
|
9
|
+
#
|
10
|
+
# Usage:
|
11
|
+
#
|
12
|
+
# use OmniAuth::Strategies::Miso, 'consumerkey', 'consumersecret'
|
13
|
+
#
|
14
|
+
class Miso < OmniAuth::Strategies::OAuth
|
15
|
+
def initialize(app, consumer_key = nil, consumer_secret = nil, options = {}, &block)
|
16
|
+
super(app, :miso, consumer_key, consumer_secret, {:site => 'https://gomiso.com'}, options)
|
17
|
+
end
|
18
|
+
|
19
|
+
def auth_hash
|
20
|
+
OmniAuth::Utils.deep_merge(super, {
|
21
|
+
'uid' => user_hash['id'],
|
22
|
+
'user_info' => user_info,
|
23
|
+
'extra' => {'user_hash' => user_hash}
|
24
|
+
})
|
25
|
+
end
|
26
|
+
|
27
|
+
def user_info
|
28
|
+
{
|
29
|
+
'nickname' => user_hash['username'],
|
30
|
+
'name' => user_hash['full_name'],
|
31
|
+
'image' => user_hash['profile_image_url'],
|
32
|
+
'description' => user_hash['tagline'],
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def user_hash
|
37
|
+
@user_hash ||= MultiJson.decode(@access_token.get('/api/oauth/v1/users/show.json').body)['user']
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -5,64 +5,66 @@ module OmniAuth
|
|
5
5
|
module Strategies
|
6
6
|
class OAuth
|
7
7
|
include OmniAuth::Strategy
|
8
|
-
|
8
|
+
|
9
9
|
def initialize(app, name, consumer_key = nil, consumer_secret = nil, consumer_options = {}, options = {}, &block)
|
10
10
|
self.consumer_key = consumer_key
|
11
11
|
self.consumer_secret = consumer_secret
|
12
12
|
self.consumer_options = consumer_options
|
13
13
|
super
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
def consumer
|
17
17
|
::OAuth::Consumer.new(consumer_key, consumer_secret, consumer_options.merge(options[:client_options] || options[:consumer_options] || {}))
|
18
18
|
end
|
19
19
|
|
20
20
|
attr_reader :name
|
21
21
|
attr_accessor :consumer_key, :consumer_secret, :consumer_options
|
22
|
-
|
22
|
+
|
23
23
|
def request_phase
|
24
24
|
request_token = consumer.get_request_token(:oauth_callback => callback_url)
|
25
25
|
(session['oauth']||={})[name.to_s] = {'callback_confirmed' => request_token.callback_confirmed?, 'request_token' => request_token.token, 'request_secret' => request_token.secret}
|
26
26
|
r = Rack::Response.new
|
27
|
-
|
27
|
+
|
28
28
|
if request_token.callback_confirmed?
|
29
29
|
r.redirect(request_token.authorize_url)
|
30
30
|
else
|
31
|
-
r.redirect(request_token.authorize_url(:oauth_callback => callback_url))
|
31
|
+
r.redirect(request_token.authorize_url(:oauth_callback => callback_url))
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
r.finish
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
def callback_phase
|
38
38
|
request_token = ::OAuth::RequestToken.new(consumer, session['oauth'][name.to_s].delete('request_token'), session['oauth'][name.to_s].delete('request_secret'))
|
39
|
-
|
39
|
+
|
40
40
|
opts = {}
|
41
41
|
if session['oauth'][name.to_s]['callback_confirmed']
|
42
|
-
opts[:oauth_verifier] = request['oauth_verifier']
|
42
|
+
opts[:oauth_verifier] = request['oauth_verifier']
|
43
43
|
else
|
44
|
-
opts[:oauth_callback] = callback_url
|
44
|
+
opts[:oauth_callback] = callback_url
|
45
45
|
end
|
46
46
|
|
47
47
|
@access_token = request_token.get_access_token(opts)
|
48
48
|
super
|
49
|
+
rescue ::Net::HTTPFatalError => e
|
50
|
+
fail!(:service_unavailable, e)
|
49
51
|
rescue ::OAuth::Unauthorized => e
|
50
52
|
fail!(:invalid_credentials, e)
|
51
53
|
rescue ::MultiJson::DecodeError => e
|
52
54
|
fail!(:invalid_response, e)
|
53
55
|
end
|
54
|
-
|
56
|
+
|
55
57
|
def auth_hash
|
56
58
|
OmniAuth::Utils.deep_merge(super, {
|
57
59
|
'credentials' => {
|
58
|
-
'token' => @access_token.token,
|
60
|
+
'token' => @access_token.token,
|
59
61
|
'secret' => @access_token.secret
|
60
62
|
}, 'extra' => {
|
61
63
|
'access_token' => @access_token
|
62
64
|
}
|
63
65
|
})
|
64
66
|
end
|
65
|
-
|
67
|
+
|
66
68
|
def unique_id
|
67
69
|
nil
|
68
70
|
end
|
@@ -64,7 +64,7 @@ module OmniAuth
|
|
64
64
|
end
|
65
65
|
|
66
66
|
verifier = request.params['code']
|
67
|
-
@access_token = client.web_server.get_access_token(verifier, :redirect_uri => callback_url)
|
67
|
+
@access_token = client.web_server.get_access_token(verifier, {:redirect_uri => callback_url}.merge(options))
|
68
68
|
|
69
69
|
if @access_token.expires? && @access_token.expires_in <= 0
|
70
70
|
client.request(:post, client.access_token_url, {
|
@@ -72,8 +72,8 @@ module OmniAuth
|
|
72
72
|
'grant_type' => 'refresh_token',
|
73
73
|
'client_secret' => client_secret,
|
74
74
|
'refresh_token' => @access_token.refresh_token
|
75
|
-
})
|
76
|
-
@access_token = client.web_server.get_access_token(verifier, :redirect_uri => callback_url)
|
75
|
+
}.merge(options))
|
76
|
+
@access_token = client.web_server.get_access_token(verifier, {:redirect_uri => callback_url}.merge(options))
|
77
77
|
end
|
78
78
|
|
79
79
|
super
|
@@ -17,19 +17,6 @@ module OmniAuth
|
|
17
17
|
:access_token_path => "/oauth/access_token",
|
18
18
|
:authorize_url => "https://www.tripit.com/oauth/authorize"}, options, &block)
|
19
19
|
end
|
20
|
-
|
21
|
-
def request_phase
|
22
|
-
request_token = consumer.get_request_token(:oauth_callback => callback_url)
|
23
|
-
(session[:oauth]||={})[name.to_sym] = {:callback_confirmed => request_token.callback_confirmed?, :request_token => request_token.token, :request_secret => request_token.secret}
|
24
|
-
r = Rack::Response.new
|
25
|
-
# For some reason, TripIt NEEDS the &oauth_callback query param or the user receives an error.
|
26
|
-
r.redirect request_token.authorize_url + "&oauth_callback=" + urlencode(callback_url)
|
27
|
-
r.finish
|
28
|
-
end
|
29
|
-
|
30
|
-
def urlencode(str)
|
31
|
-
str.gsub(/[^a-zA-Z0-9_\.\-]/n) { sprintf('%%%02x', $&[0].ord) }
|
32
|
-
end
|
33
20
|
end
|
34
21
|
end
|
35
22
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: oa-oauth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 6
|
5
|
-
version: 0.2.0.
|
5
|
+
version: 0.2.0.beta5
|
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-
|
13
|
+
date: 2011-03-01 00:00:00 -06: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.0.
|
23
|
+
version: 0.2.0.beta5
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: *id001
|
@@ -143,6 +143,7 @@ extensions: []
|
|
143
143
|
extra_rdoc_files: []
|
144
144
|
|
145
145
|
files:
|
146
|
+
- lib/oa-oauth.rb
|
146
147
|
- lib/omniauth/oauth.rb
|
147
148
|
- lib/omniauth/strategies/bitly.rb
|
148
149
|
- lib/omniauth/strategies/dopplr.rb
|
@@ -156,6 +157,7 @@ files:
|
|
156
157
|
- lib/omniauth/strategies/identica.rb
|
157
158
|
- lib/omniauth/strategies/linked_in.rb
|
158
159
|
- lib/omniauth/strategies/meetup.rb
|
160
|
+
- lib/omniauth/strategies/miso.rb
|
159
161
|
- lib/omniauth/strategies/netflix.rb
|
160
162
|
- lib/omniauth/strategies/oauth.rb
|
161
163
|
- lib/omniauth/strategies/oauth2.rb
|
@@ -184,7 +186,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
184
186
|
requirements:
|
185
187
|
- - ">="
|
186
188
|
- !ruby/object:Gem::Version
|
187
|
-
hash:
|
189
|
+
hash: -2581674124664783395
|
188
190
|
segments:
|
189
191
|
- 0
|
190
192
|
version: "0"
|