mmangino-facebooker 1.0.38 → 1.0.39
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +3 -0
- data/facebooker.gemspec +2 -2
- data/lib/facebooker/rails/controller.rb +15 -0
- data/lib/facebooker/session.rb +9 -4
- data/lib/facebooker/version.rb +1 -1
- data/test/facebooker/rails_integration_test.rb +23 -2
- metadata +2 -2
data/README.rdoc
CHANGED
data/facebooker.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{facebooker}
|
5
|
-
s.version = "1.0.
|
5
|
+
s.version = "1.0.39"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Chad Fowler", "Patrick Ewing", "Mike Mangino", "Shane Vitarana", "Corey Innis"]
|
9
|
-
s.date = %q{2009-
|
9
|
+
s.date = %q{2009-07-01}
|
10
10
|
s.description = %q{Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[http://wiki.developers.facebook.com/index.php/API]. Its goals are: * Idiomatic Ruby * No dependencies outside of the Ruby standard library (This is true with Rails 2.1. Previous Rails versions require the JSON gem) * Concrete classes and methods modeling the Facebook data, so it's easy for a Rubyist to understand what's available * Well tested}
|
11
11
|
s.email = %q{mmangino@elevatedrails.com}
|
12
12
|
s.extra_rdoc_files = ["Manifest.txt", "CHANGELOG.rdoc", "COPYING.rdoc", "README.rdoc", "TODO.rdoc"]
|
@@ -31,6 +31,12 @@ module Facebooker
|
|
31
31
|
secure_with_facebook_params! || secure_with_cookies! || secure_with_token!
|
32
32
|
end
|
33
33
|
|
34
|
+
#this is used to proxy a connection through a rails app so the facebook secret key is not needed
|
35
|
+
#iphone apps use this
|
36
|
+
def create_facebook_session_with_secret
|
37
|
+
secure_with_session_secret!
|
38
|
+
end
|
39
|
+
|
34
40
|
def set_facebook_session
|
35
41
|
# first, see if we already have a session
|
36
42
|
session_set = session_already_secured?
|
@@ -148,6 +154,15 @@ module Facebooker
|
|
148
154
|
@facebook_session
|
149
155
|
end
|
150
156
|
end
|
157
|
+
|
158
|
+
def secure_with_session_secret!
|
159
|
+
if params['auth_token']
|
160
|
+
@facebook_session = new_facebook_session
|
161
|
+
@facebook_session.auth_token = params['auth_token']
|
162
|
+
@facebook_session.secure_with_session_secret!
|
163
|
+
@facebook_session
|
164
|
+
end
|
165
|
+
end
|
151
166
|
|
152
167
|
def secure_with_facebook_params!
|
153
168
|
return unless request_comes_from_facebook?
|
data/lib/facebooker/session.rb
CHANGED
@@ -72,6 +72,7 @@ module Facebooker
|
|
72
72
|
|
73
73
|
attr_writer :auth_token
|
74
74
|
attr_reader :session_key
|
75
|
+
attr_reader :secret_from_session
|
75
76
|
|
76
77
|
def self.create(api_key=nil, secret_key=nil)
|
77
78
|
api_key ||= self.api_key
|
@@ -181,10 +182,14 @@ module Facebooker
|
|
181
182
|
!@session_key.nil? && !expired?
|
182
183
|
end
|
183
184
|
|
184
|
-
def secure!
|
185
|
-
response = post 'facebook.auth.getSession', :auth_token => auth_token
|
185
|
+
def secure!(args = {})
|
186
|
+
response = post 'facebook.auth.getSession', :auth_token => auth_token, :generate_session_secret => args[:generate_session_secret] ? "1" : "0"
|
186
187
|
secure_with!(response['session_key'], response['uid'], response['expires'], response['secret'])
|
187
188
|
end
|
189
|
+
|
190
|
+
def secure_with_session_secret!
|
191
|
+
self.secure!(:generate_session_secret => true)
|
192
|
+
end
|
188
193
|
|
189
194
|
def secure_with!(session_key, uid = nil, expires = nil, secret_from_session = nil)
|
190
195
|
@session_key = session_key
|
@@ -413,10 +418,10 @@ module Facebooker
|
|
413
418
|
|
414
419
|
##
|
415
420
|
# Send email to as many as 100 users at a time
|
416
|
-
def send_email(user_ids, subject, text, fbml = nil)
|
421
|
+
def send_email(user_ids, subject, text, fbml = nil)
|
417
422
|
user_ids = Array(user_ids)
|
418
423
|
params = {:fbml => fbml, :recipients => user_ids.map{ |id| User.cast_to_facebook_id(id)}.join(','), :text => text, :subject => subject}
|
419
|
-
post 'facebook.notifications.sendEmail', params
|
424
|
+
post 'facebook.notifications.sendEmail', params, false
|
420
425
|
end
|
421
426
|
|
422
427
|
# Only serialize the bare minimum to recreate the session.
|
data/lib/facebooker/version.rb
CHANGED
@@ -37,6 +37,13 @@ class FBConnectController < NoisyController
|
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
+
class FBConnectControllerProxy < NoisyController
|
41
|
+
before_filter :create_facebook_session_with_secret
|
42
|
+
def index
|
43
|
+
render :text => 'score!'
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
40
47
|
class ControllerWhichRequiresFacebookAuthentication < NoisyController
|
41
48
|
ensure_authenticated_to_facebook
|
42
49
|
def index
|
@@ -372,6 +379,20 @@ class RailsIntegrationTest < Test::Unit::TestCase
|
|
372
379
|
assert_equal(1111111, @controller.facebook_session.user.id)
|
373
380
|
end
|
374
381
|
|
382
|
+
def test_session_can_be_secured_with_secret
|
383
|
+
@controller = FBConnectControllerProxy.new
|
384
|
+
auth_token = 'ohaiauthtokenhere111'
|
385
|
+
modified_params = facebook_params
|
386
|
+
modified_params.delete('fb_sig_session_key')
|
387
|
+
modified_params['auth_token'] = auth_token
|
388
|
+
modified_params['generate_session_secret'] = true
|
389
|
+
session_mock = flexmock(session = Facebooker::Session.create(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY']))
|
390
|
+
session_params = { 'session_key' => '123', 'uid' => '321' }
|
391
|
+
session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token, :generate_session_secret => "1").once.and_return(session_params).ordered
|
392
|
+
flexmock(@controller).should_receive(:new_facebook_session).once.and_return(session).ordered
|
393
|
+
get :index, modified_params
|
394
|
+
end
|
395
|
+
|
375
396
|
def test_session_can_be_secured_with_auth_token
|
376
397
|
auth_token = 'ohaiauthtokenhere111'
|
377
398
|
modified_params = facebook_params
|
@@ -379,7 +400,7 @@ class RailsIntegrationTest < Test::Unit::TestCase
|
|
379
400
|
modified_params['auth_token'] = auth_token
|
380
401
|
session_mock = flexmock(session = Facebooker::Session.create(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY']))
|
381
402
|
session_params = { 'session_key' => '123', 'uid' => '321' }
|
382
|
-
session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token).once.and_return(session_params).ordered
|
403
|
+
session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token, :generate_session_secret => "0").once.and_return(session_params).ordered
|
383
404
|
flexmock(@controller).should_receive(:new_facebook_session).once.and_return(session).ordered
|
384
405
|
get :index, modified_params
|
385
406
|
end
|
@@ -391,7 +412,7 @@ class RailsIntegrationTest < Test::Unit::TestCase
|
|
391
412
|
modified_params['auth_token'] = auth_token
|
392
413
|
session_mock = flexmock(session = Facebooker::Session.create(ENV['FACEBOOK_API_KEY'], ENV['FACEBOOK_SECRET_KEY']))
|
393
414
|
session_params = { 'session_key' => '123', 'uid' => '321' }
|
394
|
-
session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token).once.and_return(session_params).ordered
|
415
|
+
session_mock.should_receive(:post).with('facebook.auth.getSession', :auth_token => auth_token, :generate_session_secret => "0").once.and_return(session_params).ordered
|
395
416
|
flexmock(@controller).should_receive(:new_facebook_session).once.and_return(session).ordered
|
396
417
|
setup_fb_connect_cookies(expired_cookie_hash_for_auth)
|
397
418
|
get :index, modified_params
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mmangino-facebooker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.39
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chad Fowler
|
@@ -13,7 +13,7 @@ autorequire:
|
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
15
|
|
16
|
-
date: 2009-
|
16
|
+
date: 2009-07-01 00:00:00 -07:00
|
17
17
|
default_executable:
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|