oauth-plugin 0.4.0.pre4 → 0.4.0.pre5
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/.gitignore +2 -0
- data/CHANGELOG +11 -0
- data/Gemfile.lock +66 -0
- data/Guardfile +8 -0
- data/README.rdoc +50 -4
- data/generators/oauth_consumer/templates/controller.rb +8 -0
- data/generators/oauth_consumer/templates/oauth_config.rb +23 -1
- data/generators/oauth_provider/oauth_provider_generator.rb +0 -4
- data/generators/oauth_provider/templates/oauth2_authorize.html.erb +2 -2
- data/generators/oauth_provider/templates/oauth2_authorize.html.haml +1 -1
- data/generators/oauth_provider/templates/request_token.rb +2 -2
- data/lib/generators/active_record/oauth_provider_templates/request_token.rb +2 -2
- data/lib/generators/erb/oauth_provider_templates/oauth2_authorize.html.erb +1 -1
- data/lib/generators/haml/oauth_provider_templates/oauth2_authorize.html.haml +1 -1
- data/lib/generators/mongoid/oauth_consumer_templates/consumer_token.rb +10 -8
- data/lib/generators/mongoid/oauth_provider_templates/request_token.rb +2 -2
- data/lib/generators/oauth_consumer/oauth_consumer_generator.rb +5 -1
- data/lib/generators/oauth_consumer/templates/controller.rb +9 -0
- data/lib/generators/oauth_consumer/templates/oauth_config.rb +21 -0
- data/lib/generators/rspec/oauth_provider_generator.rb +0 -4
- data/lib/generators/test_unit/oauth_provider_generator.rb +0 -4
- data/lib/oauth-plugin/version.rb +1 -1
- data/lib/oauth/controllers/application_controller_methods.rb +24 -127
- data/lib/oauth/controllers/consumer_controller.rb +60 -8
- data/lib/oauth/controllers/provider_controller.rb +4 -7
- data/lib/oauth/models/consumers/service_loader.rb +3 -1
- data/lib/oauth/models/consumers/services/google_token.rb +7 -13
- data/lib/oauth/models/consumers/services/oauth2_token.rb +27 -0
- data/lib/oauth/models/consumers/services/twitter_token.rb +18 -11
- data/lib/oauth/models/consumers/token.rb +10 -6
- data/lib/oauth/rack/oauth_filter.rb +57 -12
- data/oauth-plugin.gemspec +11 -3
- data/spec/rack/oauth_filter_spec.rb +136 -0
- data/spec/spec_helper.rb +3 -0
- metadata +105 -38
- data/generators/oauth_provider/templates/controller_spec.rb +0 -838
- data/generators/oauth_provider/templates/controller_spec_helper.rb +0 -66
- data/generators/oauth_provider/templates/controller_test.rb +0 -310
- data/generators/oauth_provider/templates/controller_test_helper.rb +0 -115
- data/lib/generators/rspec/templates/controller_spec.rb +0 -838
- data/lib/generators/rspec/templates/controller_spec_helper.rb +0 -66
- data/lib/generators/test_unit/templates/controller_test.rb +0 -310
- data/lib/generators/test_unit/templates/controller_test_helper.rb +0 -115
data/CHANGELOG
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
0.4.0-pre5
|
2
|
+
- protect oauth consumer relay with :expose configuration option. It's off by default. [pelle]
|
3
|
+
- Reenable twitter client. It is now configurable for twitter tokens. :client=>:twitter_gem or :oauth_gem [pelle]
|
4
|
+
- fix issues with new consumer tokens [afeld]
|
5
|
+
- More forgiving about oob callback values[chrisrhoden]
|
6
|
+
- Update Twitter consumer to use latest Twitter Gem [afeld]
|
7
|
+
- removed portable_contacts client from Google Token [p8]
|
8
|
+
- Fixes various mongoid issues [3en]
|
9
|
+
- Adds oauth2 consumer support
|
10
|
+
- Fixes oauth2 provider. parameter should be redirect_uri not redirect_url [Kimtaro]
|
11
|
+
- Most core OAuth functionality is being put into OAuthFilter. This means Rails 2.3 and above only
|
1
12
|
0.4.0-pre4
|
2
13
|
- Fixed bug when creating a new user from a new consumer token
|
3
14
|
- Fix typo in consumer token [krasio]
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
oauth-plugin (0.4.0.pre5)
|
5
|
+
multi_json
|
6
|
+
oauth (~> 0.4.4)
|
7
|
+
oauth2
|
8
|
+
rack
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: http://rubygems.org/
|
12
|
+
specs:
|
13
|
+
addressable (2.2.6)
|
14
|
+
diff-lcs (1.1.2)
|
15
|
+
fakeweb (1.3.0)
|
16
|
+
faraday (0.6.1)
|
17
|
+
addressable (~> 2.2.4)
|
18
|
+
multipart-post (~> 1.1.0)
|
19
|
+
rack (>= 1.1.0, < 2)
|
20
|
+
fuubar (0.0.5)
|
21
|
+
rspec (~> 2.0)
|
22
|
+
rspec-instafail (~> 0.1.4)
|
23
|
+
ruby-progressbar (~> 0.0.10)
|
24
|
+
growl (1.0.3)
|
25
|
+
guard (0.3.4)
|
26
|
+
thor (~> 0.14.6)
|
27
|
+
guard-rspec (0.3.1)
|
28
|
+
guard (>= 0.2.2)
|
29
|
+
multi_json (1.0.3)
|
30
|
+
multi_xml (0.2.2)
|
31
|
+
multipart-post (1.1.2)
|
32
|
+
oauth (0.4.4)
|
33
|
+
oauth2 (0.4.1)
|
34
|
+
faraday (~> 0.6.1)
|
35
|
+
multi_json (>= 0.0.5)
|
36
|
+
opentransact (0.1.2)
|
37
|
+
multi_json
|
38
|
+
multi_xml
|
39
|
+
oauth (~> 0.4.4)
|
40
|
+
rack (1.3.0)
|
41
|
+
rack-test (0.6.0)
|
42
|
+
rack (>= 1.0)
|
43
|
+
rspec (2.4.0)
|
44
|
+
rspec-core (~> 2.4.0)
|
45
|
+
rspec-expectations (~> 2.4.0)
|
46
|
+
rspec-mocks (~> 2.4.0)
|
47
|
+
rspec-core (2.4.0)
|
48
|
+
rspec-expectations (2.4.0)
|
49
|
+
diff-lcs (~> 1.1.2)
|
50
|
+
rspec-instafail (0.1.7)
|
51
|
+
rspec-mocks (2.4.0)
|
52
|
+
ruby-progressbar (0.0.10)
|
53
|
+
thor (0.14.6)
|
54
|
+
|
55
|
+
PLATFORMS
|
56
|
+
ruby
|
57
|
+
|
58
|
+
DEPENDENCIES
|
59
|
+
fakeweb
|
60
|
+
fuubar
|
61
|
+
growl
|
62
|
+
guard-rspec
|
63
|
+
oauth-plugin!
|
64
|
+
opentransact
|
65
|
+
rack-test
|
66
|
+
rspec (~> 2.4.0)
|
data/Guardfile
ADDED
data/README.rdoc
CHANGED
@@ -67,6 +67,14 @@ This generates OAuth and OAuth client controllers as well as the required models
|
|
67
67
|
|
68
68
|
It requires an authentication framework such as acts_as_authenticated, restful_authentication or restful_open_id_authentication. It also requires Rails 2.0.
|
69
69
|
|
70
|
+
=== INSTALL RACK FILTER (NEW)
|
71
|
+
|
72
|
+
A big change over previous versions is that we now use a rack filter. You have to install this in your application.rb file:
|
73
|
+
|
74
|
+
require 'oauth/rack/oauth_filter'
|
75
|
+
config.middleware.use OAuth::Rack::OAuthFilter
|
76
|
+
|
77
|
+
|
70
78
|
=== Generator Options
|
71
79
|
|
72
80
|
The generator supports the defaults you have created in your application.rb file. eg:
|
@@ -325,11 +333,14 @@ Add entries to OAUTH_CREDENTIALS for all OAuth Applications you wish to connect
|
|
325
333
|
OAUTH_CREDENTIALS={
|
326
334
|
:twitter=>{
|
327
335
|
:key=>"key",
|
328
|
-
:secret=>"secret"
|
336
|
+
:secret=>"secret",
|
337
|
+
:client=>:twitter_gem, # :twitter_gem or :oauth_gem (defaults to :twitter_gem)
|
338
|
+
:expose => false, # set to true to expose client via the web
|
329
339
|
},
|
330
340
|
:agree2=>{
|
331
341
|
:key=>"key",
|
332
|
-
:secret=>"secret"
|
342
|
+
:secret=>"secret",
|
343
|
+
:expose => false, # set to true to expose client via the web
|
333
344
|
},
|
334
345
|
:hour_feed=>{
|
335
346
|
:key=>"",
|
@@ -370,6 +381,10 @@ And you could do:
|
|
370
381
|
|
371
382
|
The client method gives you a OAuth::AccessToken which you can use to perform rest operations on the client site - see http://oauth.rubyforge.org/rdoc/classes/OAuth/AccessToken.html
|
372
383
|
|
384
|
+
If you are using Mongoid you want to add an embeds_many association in your user model:
|
385
|
+
|
386
|
+
embeds_many :consumer_tokens
|
387
|
+
|
373
388
|
=== Custom ConsumerToken models
|
374
389
|
|
375
390
|
Before creating the FireEagleToken model the plugin checks if a class already exists by that name or if we provide an api wrapper for it. This allows you to create a better token model that uses an existing ruby gem.
|
@@ -391,9 +406,33 @@ To connect a user to an external service link or redirect them to:
|
|
391
406
|
Where SERVICE_NAME is the name you set in the OAUTH_CREDENTIALS hash. This will request the request token and redirect the user to the services authorization screen. When the user accepts the get redirected back to:
|
392
407
|
|
393
408
|
/oauth_consumers/[SERVICE_NAME]/callback
|
394
|
-
|
409
|
+
|
395
410
|
You can specify this url to the service you're calling when you register, but it will automatically be sent along anyway.
|
396
411
|
|
412
|
+
=== Expose client
|
413
|
+
|
414
|
+
This is designed to let your local javascript apps access remote OAuth apis. You have to specifically enable this by adding the expose flag to your oauth config file. eg:
|
415
|
+
|
416
|
+
OAUTH_CREDENTIALS={
|
417
|
+
:twitter=>{
|
418
|
+
:key=>"key",
|
419
|
+
:secret=>"secret",
|
420
|
+
:client=>:oauth_gem, # :twitter_gem or :oauth_gem (defaults to :twitter_gem)
|
421
|
+
:expose => true # set to true to expose client via the web
|
422
|
+
}
|
423
|
+
|
424
|
+
Once the user has authorized your application, you can access the client APIs via:
|
425
|
+
|
426
|
+
/oauth_consumers/[SERVICE_NAME]/client/[ENDPOINT]
|
427
|
+
|
428
|
+
For example to get the user's Google Calendars in JSON (documented in their API as "https://www.google.com/calendar/feeds/default?alt=jsonc"), you would append that path as the ENDPOINT above, i.e.
|
429
|
+
|
430
|
+
/oauth_consumers/google/client/calendar/feeds/default?alt=jsonc
|
431
|
+
|
432
|
+
As another example, to get my Twitter info as XML (available at "https://api.twitter.com/1/users/show.xml?screen_name=pelleb"), use:
|
433
|
+
|
434
|
+
/oauth_consumers/twitter/client/1/users/show.xml?screen_name=pelleb
|
435
|
+
|
397
436
|
=== Migrate database
|
398
437
|
|
399
438
|
The database is defined in:
|
@@ -404,6 +443,13 @@ Run them as any other normal migration in rails with:
|
|
404
443
|
|
405
444
|
rake db:migrate
|
406
445
|
|
446
|
+
== Contribute and earn OAuth Karma
|
447
|
+
|
448
|
+
Anyone who has a commit accepted into the official oauth-plugin git repo is awarded OAuthKarma:
|
449
|
+
|
450
|
+
https://picomoney.com/oauth-karma/accounts
|
451
|
+
|
452
|
+
|
407
453
|
== More
|
408
454
|
|
409
455
|
The Mailing List for all things OAuth in Ruby is:
|
@@ -418,4 +464,4 @@ The OAuth Ruby Gem home page is http://oauth.rubyforge.org
|
|
418
464
|
|
419
465
|
Please help documentation, patches and testing.
|
420
466
|
|
421
|
-
Copyright (c) 2007-
|
467
|
+
Copyright (c) 2007-2011 Pelle Braendgaard and contributors, released under the MIT license
|
@@ -7,6 +7,14 @@ class OauthConsumersController < ApplicationController
|
|
7
7
|
@services=OAUTH_CREDENTIALS.keys-@consumer_tokens.collect{|c| c.class.service_name}
|
8
8
|
end
|
9
9
|
|
10
|
+
def callback
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def client
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
10
18
|
protected
|
11
19
|
|
12
20
|
# Change this to decide where you want to redirect user to after callback is finished.
|
@@ -6,13 +6,27 @@
|
|
6
6
|
# OAUTH_CREDENTIALS={
|
7
7
|
# :twitter=>{
|
8
8
|
# :key=>"",
|
9
|
-
# :secret=>""
|
9
|
+
# :secret=>"",
|
10
|
+
# :client=>:twitter_gem, # :twitter_gem or :oauth_gem (defaults to :twitter_gem)
|
11
|
+
# :expose => false, # expose client at /oauth_consumers/twitter/client see docs
|
12
|
+
# :allow_login => true # Use :allow_login => true to allow user to login to account
|
10
13
|
# },
|
11
14
|
# :google=>{
|
12
15
|
# :key=>"",
|
13
16
|
# :secret=>"",
|
17
|
+
# :expose => false, # expose client at /oauth_consumers/google/client see docs
|
14
18
|
# :scope=>"" # see http://code.google.com/apis/gdata/faq.html#AuthScopes
|
15
19
|
# },
|
20
|
+
# :github=>{
|
21
|
+
# :key => "",
|
22
|
+
# :secret => "",
|
23
|
+
# :expose => false, # expose client at /oauth_consumers/twitter/client see docs
|
24
|
+
#
|
25
|
+
# },
|
26
|
+
# :facebook=>{
|
27
|
+
# :key => "",
|
28
|
+
# :secret => ""
|
29
|
+
# },
|
16
30
|
# :agree2=>{
|
17
31
|
# :key=>"",
|
18
32
|
# :secret=>""
|
@@ -21,6 +35,14 @@
|
|
21
35
|
# :key=>"",
|
22
36
|
# :secret=>""
|
23
37
|
# },
|
38
|
+
# :oauth2_server => {
|
39
|
+
# :key=>"",
|
40
|
+
# :secret=>"",
|
41
|
+
# :oauth_version => 2
|
42
|
+
# :options=>{ # OAuth::Consumer options
|
43
|
+
# :site=>"http://hourfeed.com" # Remember to add a site for a generic OAuth site
|
44
|
+
# }
|
45
|
+
# },
|
24
46
|
# :hour_feed=>{
|
25
47
|
# :key=>"",
|
26
48
|
# :secret=>"",
|
@@ -73,8 +73,6 @@ class OauthProviderGenerator < Rails::Generator::Base
|
|
73
73
|
m.template 'client_applications.yml',File.join('spec/fixtures',"client_applications.yml")
|
74
74
|
m.template 'oauth_tokens.yml', File.join('spec/fixtures',"oauth_tokens.yml")
|
75
75
|
m.template 'oauth_nonces.yml', File.join('spec/fixtures',"oauth_nonces.yml")
|
76
|
-
m.template 'controller_spec_helper.rb', File.join('spec/controllers', controller_class_path,"#{controller_file_name}_controller_spec_helper.rb")
|
77
|
-
m.template 'controller_spec.rb',File.join('spec/controllers',controller_class_path,"#{controller_file_name}_controller_spec.rb")
|
78
76
|
m.template 'clients_controller_spec.rb',File.join('spec/controllers',controller_class_path,"#{controller_file_name}_clients_controller_spec.rb")
|
79
77
|
else
|
80
78
|
m.directory File.join('test')
|
@@ -87,8 +85,6 @@ class OauthProviderGenerator < Rails::Generator::Base
|
|
87
85
|
m.template 'client_applications.yml',File.join('test/fixtures',"client_applications.yml")
|
88
86
|
m.template 'oauth_tokens.yml', File.join('test/fixtures',"oauth_tokens.yml")
|
89
87
|
m.template 'oauth_nonces.yml', File.join('test/fixtures',"oauth_nonces.yml")
|
90
|
-
m.template 'controller_test_helper.rb', File.join('test', controller_class_path,"#{controller_file_name}_controller_test_helper.rb")
|
91
|
-
m.template 'controller_test.rb',File.join('test/functional',controller_class_path,"#{controller_file_name}_controller_test.rb")
|
92
88
|
m.template 'clients_controller_test.rb',File.join('test/functional',controller_class_path,"#{controller_file_name}_clients_controller_test.rb")
|
93
89
|
end
|
94
90
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<%% form_tag authorize_url do %>
|
4
4
|
<%%= hidden_field_tag "response_type", params[:response_type]%>
|
5
5
|
<%%= hidden_field_tag "client_id", params[:client_id]%>
|
6
|
-
<%%= hidden_field_tag "
|
6
|
+
<%%= hidden_field_tag "redirect_uri", params[:redirect_uri]%>
|
7
7
|
<%%= hidden_field_tag "state", params[:state]%>
|
8
8
|
<%%= hidden_field_tag "scope", params[:scope]%>
|
9
9
|
|
@@ -13,4 +13,4 @@
|
|
13
13
|
<p>
|
14
14
|
<%%= submit_tag %>
|
15
15
|
</p>
|
16
|
-
<%% end %>
|
16
|
+
<%% end %>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
- form_tag authorize_url do
|
9
9
|
= hidden_field_tag "response_type", params[:response_type]
|
10
10
|
= hidden_field_tag "client_id", params[:client_id]
|
11
|
-
= hidden_field_tag "
|
11
|
+
= hidden_field_tag "redirect_uri", params[:redirect_uri]
|
12
12
|
= hidden_field_tag "state", params[:state]
|
13
13
|
= hidden_field_tag "scope", params[:scope]
|
14
14
|
= check_box_tag 'authorize'
|
@@ -30,11 +30,11 @@ class RequestToken < OauthToken
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def oob?
|
33
|
-
|
33
|
+
callback_url.nil? || callback_url.downcase == 'oob'
|
34
34
|
end
|
35
35
|
|
36
36
|
def oauth10?
|
37
37
|
(defined? OAUTH_10_SUPPORT) && OAUTH_10_SUPPORT && self.callback_url.blank?
|
38
38
|
end
|
39
39
|
|
40
|
-
end
|
40
|
+
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<%% form_tag authorize_url do %>
|
4
4
|
<%%= hidden_field_tag "response_type", params[:response_type]%>
|
5
5
|
<%%= hidden_field_tag "client_id", params[:client_id]%>
|
6
|
-
<%%= hidden_field_tag "
|
6
|
+
<%%= hidden_field_tag "redirect_uri", params[:redirect_uri]%>
|
7
7
|
<%%= hidden_field_tag "state", params[:state]%>
|
8
8
|
<%%= hidden_field_tag "scope", params[:scope]%>
|
9
9
|
|
@@ -8,7 +8,7 @@
|
|
8
8
|
- form_tag authorize_url do
|
9
9
|
= hidden_field_tag "response_type", params[:response_type]
|
10
10
|
= hidden_field_tag "client_id", params[:client_id]
|
11
|
-
= hidden_field_tag "
|
11
|
+
= hidden_field_tag "redirect_uri", params[:redirect_uri]
|
12
12
|
= hidden_field_tag "state", params[:state]
|
13
13
|
= hidden_field_tag "scope", params[:scope]
|
14
14
|
= check_box_tag 'authorize'
|
@@ -18,20 +18,22 @@ class ConsumerToken
|
|
18
18
|
# index "consumer_tokens.token"
|
19
19
|
#
|
20
20
|
embedded_in :user, :inverse_of => :consumer_tokens
|
21
|
-
|
21
|
+
|
22
22
|
def self.find_or_create_from_access_token(user,access_token)
|
23
|
+
secret = access_token.respond_to?(:secret) ? access_token.secret : nil
|
24
|
+
|
23
25
|
if user
|
24
|
-
user.consumer_tokens.
|
25
|
-
|
26
|
+
user.consumer_tokens.where(:_type=>self.to_s,:token=>access_token.token).first ||
|
27
|
+
self.create!(:_type=>self.to_s,:token=>access_token.token, :secret=>secret, :user=>user)
|
26
28
|
else
|
27
|
-
|
28
|
-
# Please submit a patch
|
29
|
-
user = User.first(:conditions=>{:_type=>self.to_s,"consumer_tokens.token"=>access_token.token})
|
29
|
+
user = User.where("consumer_tokens._type"=>self.to_s,"consumer_tokens.token"=>access_token.token).first
|
30
30
|
if user
|
31
31
|
user.consumer_tokens.detect{|t| t.token==access_token.token && t.is_a?(self)}
|
32
32
|
else
|
33
|
-
user = User.
|
34
|
-
|
33
|
+
user = User.new
|
34
|
+
self.create!(:_type=>self.to_s,:token=>access_token.token, :secret=>secret, :user=>user)
|
35
|
+
user.save!
|
36
|
+
user.consumer_tokens.last
|
35
37
|
end
|
36
38
|
end
|
37
39
|
end
|
@@ -19,7 +19,11 @@ class OauthConsumerGenerator < Rails::Generators::Base
|
|
19
19
|
def add_route
|
20
20
|
route <<-ROUTE.strip
|
21
21
|
resources :oauth_consumers do
|
22
|
-
|
22
|
+
member do
|
23
|
+
get :callback
|
24
|
+
get :callback2
|
25
|
+
match 'client/*endpoint' => 'oauth_consumers#client'
|
26
|
+
end
|
23
27
|
end
|
24
28
|
ROUTE
|
25
29
|
end
|
@@ -12,6 +12,15 @@ class OauthConsumersController < ApplicationController
|
|
12
12
|
@services=OAUTH_CREDENTIALS.keys-@consumer_tokens.collect{|c| c.class.service_name}
|
13
13
|
end
|
14
14
|
|
15
|
+
def callback
|
16
|
+
super
|
17
|
+
end
|
18
|
+
|
19
|
+
def client
|
20
|
+
super
|
21
|
+
end
|
22
|
+
|
23
|
+
|
15
24
|
protected
|
16
25
|
|
17
26
|
# Change this to decide where you want to redirect user to after callback is finished.
|
@@ -7,13 +7,26 @@
|
|
7
7
|
# :twitter=>{
|
8
8
|
# :key=>"",
|
9
9
|
# :secret=>"",
|
10
|
+
# :client=>:twitter_gem, # :twitter_gem or :oauth_gem (defaults to :twitter_gem)
|
11
|
+
# :expose => false, # expose client at /oauth_consumers/twitter/client see docs
|
10
12
|
# :allow_login => true # Use :allow_login => true to allow user to login to account
|
11
13
|
# },
|
12
14
|
# :google=>{
|
13
15
|
# :key=>"",
|
14
16
|
# :secret=>"",
|
17
|
+
# :expose => false, # expose client at /oauth_consumers/google/client see docs
|
15
18
|
# :scope=>"" # see http://code.google.com/apis/gdata/faq.html#AuthScopes
|
16
19
|
# },
|
20
|
+
# :github=>{
|
21
|
+
# :key => "",
|
22
|
+
# :secret => "",
|
23
|
+
# :expose => false, # expose client at /oauth_consumers/twitter/client see docs
|
24
|
+
#
|
25
|
+
# },
|
26
|
+
# :facebook=>{
|
27
|
+
# :key => "",
|
28
|
+
# :secret => ""
|
29
|
+
# },
|
17
30
|
# :agree2=>{
|
18
31
|
# :key=>"",
|
19
32
|
# :secret=>""
|
@@ -22,6 +35,14 @@
|
|
22
35
|
# :key=>"",
|
23
36
|
# :secret=>""
|
24
37
|
# },
|
38
|
+
# :oauth2_server => {
|
39
|
+
# :key=>"",
|
40
|
+
# :secret=>"",
|
41
|
+
# :oauth_version => 2
|
42
|
+
# :options=>{ # OAuth::Consumer options
|
43
|
+
# :site=>"http://hourfeed.com" # Remember to add a site for a generic OAuth site
|
44
|
+
# }
|
45
|
+
# },
|
25
46
|
# :hour_feed=>{
|
26
47
|
# :key=>"",
|
27
48
|
# :secret=>"",
|