rfacebook 0.9.2 → 0.9.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/facebook_web_session.rb
CHANGED
@@ -160,7 +160,7 @@ module RFacebook
|
|
160
160
|
# handle invalidation
|
161
161
|
if (timeout and (sigParams["time"].nil? or (Time.now.to_i - sigParams["time"].to_i > timeout.to_i)))
|
162
162
|
# invalidate if the timeout has been reached
|
163
|
-
|
163
|
+
#@logger.debug "** RFACEBOOK(GEM) - fbparams is empty because the signature was timed out" if @logger
|
164
164
|
sigParams = {}
|
165
165
|
end
|
166
166
|
|
@@ -168,7 +168,7 @@ module RFacebook
|
|
168
168
|
expectedSig = originalParams["fb_sig"]
|
169
169
|
if !(sigParams and expectedSig and generate_signature(sigParams, @api_secret) == expectedSig)
|
170
170
|
# didn't match, empty out the params
|
171
|
-
|
171
|
+
#@logger.debug "** RFACEBOOK(GEM) - fbparams is empty because the signature did not match" if @logger
|
172
172
|
sigParams = {}
|
173
173
|
end
|
174
174
|
|
@@ -86,6 +86,12 @@ module RFacebook
|
|
86
86
|
dup_cookies = (self.cookies || {}).dup
|
87
87
|
@fbparams = rfacebook_session_holder.get_fb_sig_params(dup_cookies)
|
88
88
|
end
|
89
|
+
|
90
|
+
# finally, if we are an iframe app we may have saved the fbparams
|
91
|
+
# to the session for safekeeping
|
92
|
+
if (!@fbparams || @fbparams.length <= 0)
|
93
|
+
@fbparams = session[:rfacebook_session_iframe_fbparams] || {}
|
94
|
+
end
|
89
95
|
|
90
96
|
return @fbparams
|
91
97
|
|
@@ -138,25 +144,28 @@ module RFacebook
|
|
138
144
|
end
|
139
145
|
|
140
146
|
def in_facebook_canvas?
|
141
|
-
|
147
|
+
in_canvas = params["fb_sig_in_canvas"] || fbparams["in_canvas"]
|
148
|
+
return (in_canvas == "1" || in_canvas == true)
|
142
149
|
end
|
143
150
|
|
144
151
|
def in_facebook_frame?
|
145
|
-
|
152
|
+
in_iframe = params["fb_sig_in_iframe"] || fbparams["in_iframe"]
|
153
|
+
return (in_iframe == "1" || in_iframe == true)
|
146
154
|
end
|
147
155
|
|
148
156
|
def in_mock_ajax?
|
149
|
-
return (params["fb_mockajax_url"]
|
157
|
+
return (params["fb_mockajax_url"] == "1" || params["fb_mockajax_url"] == true)
|
150
158
|
end
|
151
159
|
|
152
160
|
def in_external_app?
|
153
161
|
# FIXME: once you click away in an iframe app, you are considered to be an external app
|
154
|
-
# TODO: read up on the
|
162
|
+
# TODO: read up on the hacks for avoiding nested iframes
|
155
163
|
return (params["fb_sig"] == nil and !in_facebook_frame?)
|
156
164
|
end
|
157
165
|
|
158
166
|
def added_facebook_application?
|
159
|
-
|
167
|
+
addedApp = params["fb_sig_added"] || fbparams["added"]
|
168
|
+
return (addedApp == "1" || addedApp == true)
|
160
169
|
end
|
161
170
|
|
162
171
|
def facebook_platform_signature_verified?
|
@@ -365,6 +374,10 @@ module RFacebook
|
|
365
374
|
RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: persisting Facebook session information into Rails session"
|
366
375
|
session[:rfacebook_session] = @rfacebook_session_holder.dup
|
367
376
|
session[:rfacebook_session].logger = nil # some session stores can't serialize the Rails logger
|
377
|
+
if in_facebook_frame?
|
378
|
+
# we need iframe apps to remember they are iframe apps
|
379
|
+
session[:rfacebook_session_iframe_fbparams] = fbparams
|
380
|
+
end
|
368
381
|
end
|
369
382
|
end
|
370
383
|
|
@@ -376,10 +389,13 @@ module RFacebook
|
|
376
389
|
|
377
390
|
def url_for__RFACEBOOK(options={}, *parameters) # :nodoc:
|
378
391
|
|
379
|
-
#
|
380
|
-
|
381
|
-
|
382
|
-
|
392
|
+
# fix problems that some Rails installations had with sending nil options
|
393
|
+
options ||= {}
|
394
|
+
|
395
|
+
# # error check
|
396
|
+
# if !options
|
397
|
+
# RAILS_DEFAULT_LOGGER.info "** RFACEBOOK WARNING: options cannot be nil in call to url_for"
|
398
|
+
# end
|
383
399
|
|
384
400
|
# use special URL rewriting when inside the canvas
|
385
401
|
# setting the mock_ajax option to true will override this
|
@@ -392,7 +408,7 @@ module RFacebook
|
|
392
408
|
if (in_facebook_canvas? and !mockajaxSpecified) #TODO: do something separate for in_facebook_frame?
|
393
409
|
|
394
410
|
if options.is_a? Hash
|
395
|
-
options[:only_path] = true
|
411
|
+
options[:only_path] = true if options[:only_path].nil?
|
396
412
|
end
|
397
413
|
|
398
414
|
# try to get a regular URL
|
@@ -400,9 +416,12 @@ module RFacebook
|
|
400
416
|
|
401
417
|
# replace anything that references the callback with the
|
402
418
|
# Facebook canvas equivalent (apps.facebook.com/*)
|
403
|
-
if
|
419
|
+
if path.starts_with?(self.facebook_callback_path)
|
404
420
|
path.sub!(self.facebook_callback_path, self.facebook_canvas_path)
|
405
421
|
path = "http://apps.facebook.com#{path}"
|
422
|
+
elsif "#{path}/".starts_with?(self.facebook_callback_path)
|
423
|
+
path.sub!(self.facebook_callback_path.chop, self.facebook_canvas_path.chop)
|
424
|
+
path = "http://apps.facebook.com#{path}"
|
406
425
|
elsif (path.starts_with?("http://www.facebook.com") or path.starts_with?("https://www.facebook.com"))
|
407
426
|
# be sure that URLs that go to some other Facebook service redirect back to the canvas
|
408
427
|
if path.include?("?")
|
@@ -147,6 +147,8 @@ module RFacebook
|
|
147
147
|
######################
|
148
148
|
module InstanceMethods
|
149
149
|
|
150
|
+
# TODO: to help developers stay within the TOS, we should have a method in here like "with_facebook_scope(fbsession){...}"
|
151
|
+
|
150
152
|
def facebook_session
|
151
153
|
if !@facebook_session
|
152
154
|
@facebook_session = FacebookWebSession.new(self.facebook_api_key, self.facebook_api_secret)
|
@@ -36,6 +36,7 @@ module RFacebook::Rails::Plugin
|
|
36
36
|
|
37
37
|
module ControllerExtensions
|
38
38
|
def facebook_api_key
|
39
|
+
# TODO: pull these overrides up into the original module, and make a FACEBOOK global in the backwards-compatibility file
|
39
40
|
FACEBOOK["key"] || super
|
40
41
|
end
|
41
42
|
def facebook_api_secret
|
@@ -53,7 +53,7 @@ module RFacebook
|
|
53
53
|
|
54
54
|
def image_path(*params)
|
55
55
|
path = super(*params)
|
56
|
-
if (in_facebook_canvas? or in_mock_ajax?)
|
56
|
+
if ((in_facebook_canvas? or in_mock_ajax?) and !(/(\w+)(\:\/\/)([\w0-9\.]+)([\:0-9]*)(.*)/.match(path)))
|
57
57
|
path = "#{request.protocol}#{request.host_with_port}#{path}"
|
58
58
|
end
|
59
59
|
return path
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.1
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rfacebook
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.9.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.9.3
|
7
|
+
date: 2007-09-03 00:00:00 -04:00
|
8
8
|
summary: A Ruby interface to the Facebook API v1.0+. Works with RFacebook on Rails plugin (see http://rfacebook.rubyforge.org).
|
9
9
|
require_paths:
|
10
10
|
- lib
|