rfacebook 0.9.6 → 0.9.7
Sign up to get free protection for your applications and to get access to all the features.
@@ -105,6 +105,11 @@ module RFacebook
|
|
105
105
|
# A FacebookWebSession. You may want to check is_valid? before using it.
|
106
106
|
def fbsession
|
107
107
|
|
108
|
+
# do a check to ensure that we nil out the rfacebook_session in case there is a new user visiting
|
109
|
+
if session[:rfacebook_session] and fbparams["session_key"] and session[:rfacebook_session].session_key != fbparams["session_key"]
|
110
|
+
session[:rfacebook_session] = nil
|
111
|
+
end
|
112
|
+
|
108
113
|
# if we are in the canvas, iframe, or mock ajax, we should be able to activate the session here
|
109
114
|
if (!rfacebook_session_holder.is_valid? and (in_facebook_canvas? or in_facebook_frame? or in_mock_ajax?))
|
110
115
|
|
@@ -169,6 +174,11 @@ module RFacebook
|
|
169
174
|
return (is_mockajax == "1" || is_mockajax == true || params["fb_mockajax_url"] != nil)
|
170
175
|
end
|
171
176
|
|
177
|
+
def in_ajax?
|
178
|
+
is_ajax = params["fb_sig_is_ajax"]
|
179
|
+
return (is_ajax == "1" || is_ajax == true)
|
180
|
+
end
|
181
|
+
|
172
182
|
def in_external_app?
|
173
183
|
# FIXME: once you click away in an iframe app, you are considered to be an external app
|
174
184
|
# TODO: read up on the hacks for avoiding nested iframes
|
@@ -280,6 +290,13 @@ module RFacebook
|
|
280
290
|
return true
|
281
291
|
end
|
282
292
|
|
293
|
+
# TODO: check this out
|
294
|
+
# def require_facebook_install
|
295
|
+
# if in_facebook_frame? and not added_facebook_application?
|
296
|
+
# render :text => %Q(<script language="javascript">top.location.href="#{fbsession.get_install_url}&next=#{request.path.gsub(/#{facebook_callback_path}/, "")}"</script>)
|
297
|
+
# end
|
298
|
+
# end
|
299
|
+
|
283
300
|
################################################################################################
|
284
301
|
################################################################################################
|
285
302
|
# :section: Facebook Debug Panel
|
@@ -299,6 +316,7 @@ module RFacebook
|
|
299
316
|
return ERB.new(template).result(Proc.new{})
|
300
317
|
end
|
301
318
|
|
319
|
+
# TODO: implement this in version 1.0
|
302
320
|
# def rescue_action(exception)
|
303
321
|
# # TODO: for security, we only do this in development in the canvas
|
304
322
|
# if (in_facebook_canvas? and RAILS_ENV == "development")
|
@@ -393,21 +411,19 @@ module RFacebook
|
|
393
411
|
|
394
412
|
# fix problems that some Rails installations had with sending nil options
|
395
413
|
options ||= {}
|
396
|
-
|
397
|
-
# # error check
|
398
|
-
# if !options
|
399
|
-
# RAILS_DEFAULT_LOGGER.info "** RFACEBOOK WARNING: options cannot be nil in call to url_for"
|
400
|
-
# end
|
401
|
-
|
414
|
+
|
402
415
|
# use special URL rewriting when inside the canvas
|
403
|
-
# setting the
|
404
|
-
# and force usage of regular Rails rewriting
|
405
|
-
mockajaxSpecified = false
|
416
|
+
# setting the full_callback option to true will override this
|
417
|
+
# and force usage of regular Rails rewriting
|
406
418
|
if options.is_a? Hash
|
407
|
-
|
419
|
+
if options[:mock_ajax]
|
420
|
+
RAILS_DEFAULT_LOGGER.info "** RFACEBOOK DEPRECATION WARNING: don't use :mock_ajax => true in your link_to anymore. Instead, use :full_callback => true."
|
421
|
+
end
|
422
|
+
fullCallback = (options[:full_callback] == true) ? true : false
|
423
|
+
options.delete(:full_callback)
|
408
424
|
end
|
409
425
|
|
410
|
-
if (in_facebook_canvas? and !
|
426
|
+
if ((in_facebook_canvas? or in_mock_ajax? or in_ajax?) and !fullCallback) #TODO: do something separate for in_facebook_frame?
|
411
427
|
|
412
428
|
if options.is_a? Hash
|
413
429
|
options[:only_path] = true if options[:only_path].nil?
|
@@ -437,9 +453,8 @@ module RFacebook
|
|
437
453
|
path = "#{request.protocol}#{request.host}:#{request.port}#{path}"
|
438
454
|
end
|
439
455
|
|
440
|
-
#
|
441
|
-
elsif
|
442
|
-
options.delete(:mock_ajax) # clear it so it doesnt show up in the url
|
456
|
+
# full callback rewriting
|
457
|
+
elsif fullCallback
|
443
458
|
options[:only_path] = true
|
444
459
|
path = "#{request.protocol}#{request.host}:#{request.port}#{url_for__ALIASED(options, *parameters)}"
|
445
460
|
|
@@ -452,12 +467,22 @@ module RFacebook
|
|
452
467
|
end
|
453
468
|
|
454
469
|
def redirect_to__RFACEBOOK(options = {}, *parameters) # :nodoc:
|
470
|
+
|
471
|
+
# get the url
|
472
|
+
redirectUrl = url_for(options, *parameters)
|
473
|
+
|
474
|
+
# canvas redirect
|
455
475
|
if in_facebook_canvas?
|
476
|
+
|
477
|
+
RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: Canvas redirect to #{redirectUrl}"
|
478
|
+
render :text => "<fb:redirect url=\"#{redirectUrl}\" />"
|
479
|
+
|
480
|
+
# iframe redirect
|
481
|
+
elsif redirectUrl.match(/^https?:\/\/([^\/]*\.)?facebook\.com(:\d+)?/i)
|
482
|
+
RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: iframe redirect to #{redirectUrl}"
|
483
|
+
render :text => %Q(<script type="text/javascript">\ntop.location.href='#{redirectUrl}';\n</script>)
|
456
484
|
|
457
|
-
|
458
|
-
RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: Canvas redirect to #{canvasRedirUrl}"
|
459
|
-
render :text => "<fb:redirect url=\"#{canvasRedirUrl}\" />"
|
460
|
-
|
485
|
+
# otherwise, we only need to do a standard redirect
|
461
486
|
else
|
462
487
|
RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: Regular redirect_to"
|
463
488
|
redirect_to__ALIASED(options, *parameters)
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rfacebook
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.9.
|
7
|
-
date: 2007-09-
|
6
|
+
version: 0.9.7
|
7
|
+
date: 2007-09-29 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
|