facebooker 1.0.18 → 1.0.29
Sign up to get free protection for your applications and to get access to all the features.
- data/{History.txt → CHANGELOG.rdoc} +0 -0
- data/{COPYING → COPYING.rdoc} +0 -0
- data/{README.txt → README.rdoc} +11 -4
- data/Rakefile +18 -15
- data/{TODO.txt → TODO.rdoc} +0 -0
- data/generators/facebook/templates/config/facebooker.yml +3 -0
- data/init.rb +12 -61
- data/lib/facebooker.rb +22 -15
- data/lib/facebooker/adapters/adapter_base.rb +3 -0
- data/lib/facebooker/logging.rb +1 -1
- data/lib/facebooker/model.rb +6 -4
- data/lib/facebooker/models/user.rb +39 -4
- data/lib/facebooker/parser.rb +14 -0
- data/lib/facebooker/rails/controller.rb +34 -10
- data/lib/facebooker/rails/extensions/action_controller.rb +48 -0
- data/lib/facebooker/rails/extensions/rack_setup.rb +2 -0
- data/lib/facebooker/rails/extensions/routing.rb +15 -0
- data/lib/facebooker/rails/facebook_url_helper.rb +3 -3
- data/lib/facebooker/rails/facebook_url_rewriting.rb +18 -5
- data/lib/facebooker/rails/helpers.rb +19 -2
- data/lib/facebooker/rails/helpers/fb_connect.rb +20 -10
- data/lib/facebooker/rails/publisher.rb +9 -5
- data/lib/facebooker/service.rb +1 -2
- data/lib/facebooker/session.rb +13 -1
- data/lib/facebooker/version.rb +1 -1
- data/lib/rack/facebook.rb +77 -0
- data/lib/tasks/tunnel.rake +3 -3
- data/test/facebooker/logging_test.rb +2 -2
- data/test/facebooker/models/user_test.rb +39 -3
- data/test/facebooker/rails/publisher_test.rb +19 -3
- data/test/facebooker/rails_integration_test.rb +52 -6
- data/test/rack/facebook_test.rb +62 -0
- data/test/rails_test_helper.rb +2 -0
- metadata +21 -27
- data/CHANGELOG.txt +0 -0
- data/Manifest.txt +0 -127
- data/README +0 -46
- data/lib/facebooker/models/user.rb.orig +0 -396
- data/lib/facebooker/models/user.rb.rej +0 -17
- data/lib/facebooker/session.rb.orig +0 -564
- data/lib/facebooker/session.rb.rej +0 -29
File without changes
|
data/{COPYING → COPYING.rdoc}
RENAMED
File without changes
|
data/{README.txt → README.rdoc}
RENAMED
@@ -1,4 +1,4 @@
|
|
1
|
-
=
|
1
|
+
= Facebooker
|
2
2
|
|
3
3
|
* http://facebooker.rubyforge.org
|
4
4
|
|
@@ -22,6 +22,7 @@ Facebooker is a Ruby wrapper over the Facebook[http://facebook.com] {REST API}[h
|
|
22
22
|
== SYNOPSIS:
|
23
23
|
|
24
24
|
View David Clements' {excellent tutorial}[http://apps.facebook.com/facebooker_tutorial] at {http://apps.facebook.com/facebooker_tutorial/}[http://apps.facebook.com/facebooker_tutorial] or check out {Developing Facebook Platform Applications with Rails}[http://www.pragprog.com/titles/mmfacer].
|
25
|
+
{Join the Mailing List}:[groups.google.com/group/facebooker]
|
25
26
|
|
26
27
|
== REQUIREMENTS:
|
27
28
|
|
@@ -29,7 +30,7 @@ None
|
|
29
30
|
|
30
31
|
== INSTALL:
|
31
32
|
|
32
|
-
|
33
|
+
=== Non Rails
|
33
34
|
|
34
35
|
The best way is:
|
35
36
|
|
@@ -39,7 +40,7 @@ If, for some reason, you can't/won't use RubyGems, you can do:
|
|
39
40
|
|
40
41
|
(sudo) ruby setup.rb
|
41
42
|
|
42
|
-
|
43
|
+
=== Rails
|
43
44
|
|
44
45
|
Facebooker can be installed as a Rails plugin by:
|
45
46
|
|
@@ -75,7 +76,13 @@ end
|
|
75
76
|
|
76
77
|
(The MIT License)
|
77
78
|
|
78
|
-
Copyright (c) 2008
|
79
|
+
Copyright (c) 2008-2009:
|
80
|
+
|
81
|
+
* Chad Fowler
|
82
|
+
* Patrick Ewing
|
83
|
+
* Mike Mangino
|
84
|
+
* Shane Vitarana
|
85
|
+
* Corey Innis
|
79
86
|
|
80
87
|
Permission is hereby granted, free of charge, to any person obtaining
|
81
88
|
a copy of this software and associated documentation files (the
|
data/Rakefile
CHANGED
@@ -9,20 +9,19 @@ rescue LoadError
|
|
9
9
|
$stderr.puts "Install the multi_rails gem to run tests against multiple versions of Rails"
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
$: << File.dirname(__FILE__) + '/lib'
|
13
13
|
require './lib/facebooker.rb'
|
14
14
|
|
15
|
-
Hoe.new('facebooker', Facebooker::VERSION::STRING) do |p|
|
15
|
+
HOE = Hoe.new('facebooker', Facebooker::VERSION::STRING) do |p|
|
16
16
|
p.rubyforge_name = 'facebooker'
|
17
17
|
p.author = ['Chad Fowler', 'Patrick Ewing', 'Mike Mangino', 'Shane Vitarana', 'Corey Innis']
|
18
18
|
p.email = 'mmangino@elevatedrails.com'
|
19
|
-
p.
|
20
|
-
p.
|
21
|
-
p.url = p.paragraphs_of('README.txt', 0).first.split(/\n/)[1..-1]
|
22
|
-
p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
19
|
+
p.readme_file = 'README.rdoc'
|
20
|
+
p.history_file = 'CHANGELOG.rdoc'
|
23
21
|
p.remote_rdoc_dir = '' # Release to root
|
24
22
|
p.test_globs = 'test/**/*_test.rb'
|
25
23
|
p.extra_deps << ['json', '>= 1.0.0']
|
24
|
+
p.extra_rdoc_files = FileList['*.rdoc']
|
26
25
|
end
|
27
26
|
|
28
27
|
require 'rcov/rcovtask'
|
@@ -42,16 +41,20 @@ namespace :test do
|
|
42
41
|
end
|
43
42
|
end
|
44
43
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
require 'erb'
|
44
|
+
namespace :gem do
|
45
|
+
task :spec do
|
46
|
+
File.open("#{HOE.name}.gemspec", 'w') do |f|
|
47
|
+
f.write(HOE.spec.to_ruby)
|
48
|
+
end
|
49
|
+
end
|
52
50
|
|
53
|
-
|
54
|
-
|
51
|
+
namespace :spec do
|
52
|
+
task :dev do
|
53
|
+
File.open("#{HOE.name}.gemspec", 'w') do |f|
|
54
|
+
HOE.spec.version = "#{HOE.version}.#{Time.now.strftime("%Y%m%d%H%M%S")}"
|
55
|
+
f.write(HOE.spec.to_ruby)
|
56
|
+
end
|
57
|
+
end
|
55
58
|
end
|
56
59
|
end
|
57
60
|
|
data/{TODO.txt → TODO.rdoc}
RENAMED
File without changes
|
@@ -20,6 +20,7 @@ development:
|
|
20
20
|
public_host:
|
21
21
|
public_port: 4007
|
22
22
|
local_port: 3000
|
23
|
+
server_alive_interval: 0
|
23
24
|
|
24
25
|
test:
|
25
26
|
api_key:
|
@@ -32,6 +33,7 @@ test:
|
|
32
33
|
public_host:
|
33
34
|
public_port: 4007
|
34
35
|
local_port: 3000
|
36
|
+
server_alive_interval: 0
|
35
37
|
|
36
38
|
production:
|
37
39
|
api_key:
|
@@ -44,3 +46,4 @@ production:
|
|
44
46
|
public_host:
|
45
47
|
public_port: 4007
|
46
48
|
local_port: 3000
|
49
|
+
server_alive_interval: 0
|
data/init.rb
CHANGED
@@ -9,64 +9,15 @@ FACEBOOKER = Facebooker.load_configuration(facebook_config)
|
|
9
9
|
Facebooker.logger = RAILS_DEFAULT_LOGGER if Object.const_defined? :RAILS_DEFAULT_LOGGER
|
10
10
|
|
11
11
|
require 'net/http_multipart_post'
|
12
|
-
|
13
|
-
require 'facebooker/rails/
|
14
|
-
require 'facebooker/rails/
|
15
|
-
require 'facebooker/rails/
|
16
|
-
require 'facebooker/rails/
|
17
|
-
require 'facebooker/rails/
|
18
|
-
require 'facebooker/rails/
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
subclass.send(:include,Facebooker::Rails::Controller)
|
25
|
-
subclass.helper Facebooker::Rails::Helpers
|
26
|
-
end
|
27
|
-
end
|
28
|
-
class << self
|
29
|
-
alias_method_chain :inherited, :facebooker
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
class ActionController::Routing::Route
|
35
|
-
def recognition_conditions_with_facebooker
|
36
|
-
defaults = recognition_conditions_without_facebooker
|
37
|
-
defaults << " env[:canvas] == conditions[:canvas] " if conditions[:canvas]
|
38
|
-
defaults
|
39
|
-
end
|
40
|
-
alias_method_chain :recognition_conditions, :facebooker
|
41
|
-
end
|
42
|
-
|
43
|
-
# When making get requests, Facebook sends fb_sig parameters both in the query string
|
44
|
-
# and also in the post body. We want to ignore the query string ones because they are one
|
45
|
-
# request out of date
|
46
|
-
# We only do thise when there are POST parameters so that IFrame linkage still works
|
47
|
-
class ActionController::AbstractRequest
|
48
|
-
def query_parameters_with_facebooker
|
49
|
-
if request_parameters.blank?
|
50
|
-
query_parameters_without_facebooker
|
51
|
-
else
|
52
|
-
(query_parameters_without_facebooker||{}).reject {|key,value| key.to_s =~ /^fb_sig/}
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
alias_method_chain :query_parameters, :facebooker
|
57
|
-
end
|
58
|
-
|
59
|
-
# We turn off route optimization to make named routes use our code for figuring out if they should go to the session
|
60
|
-
# If this fails, it means we're on rails 1.2, we can ignore it
|
61
|
-
begin
|
62
|
-
ActionController::Base::optimise_named_routes = false
|
63
|
-
rescue NoMethodError=>e
|
64
|
-
nil
|
65
|
-
end
|
66
|
-
|
67
|
-
# pull :canvas=> into env in routing to allow for conditions
|
68
|
-
ActionController::Routing::RouteSet.send :include, Facebooker::Rails::Routing::RouteSetExtensions
|
69
|
-
ActionController::Routing::RouteSet::Mapper.send :include, Facebooker::Rails::Routing::MapperExtensions
|
70
|
-
|
71
|
-
Mime::Type.register_alias "text/html", :fbml
|
72
|
-
Mime::Type.register_alias "text/javascript", :fbjs
|
12
|
+
if defined? Rails
|
13
|
+
require 'facebooker/rails/controller'
|
14
|
+
require 'facebooker/rails/facebook_url_rewriting'
|
15
|
+
require 'facebooker/rails/facebook_session_handling' if Rails.version < '2.3'
|
16
|
+
require 'facebooker/rails/facebook_request_fix' if Rails.version < '2.3'
|
17
|
+
require 'facebooker/rails/routing'
|
18
|
+
require 'facebooker/rails/facebook_pretty_errors' rescue nil
|
19
|
+
require 'facebooker/rails/facebook_url_helper'
|
20
|
+
require 'facebooker/rails/extensions/rack_setup' if Rails.version > '2.3'
|
21
|
+
require 'facebooker/rails/extensions/action_controller'
|
22
|
+
require 'facebooker/rails/extensions/routing'
|
23
|
+
end
|
data/lib/facebooker.rb
CHANGED
@@ -28,27 +28,34 @@ module Facebooker
|
|
28
28
|
def load_configuration(facebooker_yaml_file)
|
29
29
|
if File.exist?(facebooker_yaml_file)
|
30
30
|
if defined? RAILS_ENV
|
31
|
-
|
31
|
+
config = YAML.load_file(facebooker_yaml_file)[RAILS_ENV]
|
32
32
|
else
|
33
|
-
|
33
|
+
config = YAML.load_file(facebooker_yaml_file)
|
34
34
|
end
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
35
|
+
apply_configuration(config)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Sets the Facebook environment based on a hash of options.
|
40
|
+
# By default the hash passed in is loaded from facebooker.yml, but it can also be passed in
|
41
|
+
# manually every request to run multiple Facebook apps off one Rails app.
|
42
|
+
def apply_configuration(config)
|
43
|
+
ENV['FACEBOOK_API_KEY'] = config['api_key']
|
44
|
+
ENV['FACEBOOK_SECRET_KEY'] = config['secret_key']
|
45
|
+
ENV['FACEBOOKER_RELATIVE_URL_ROOT'] = config['canvas_page_name']
|
46
|
+
ENV['FACEBOOKER_API'] = config['api']
|
47
|
+
if config.has_key?('set_asset_host_to_callback_url')
|
48
|
+
Facebooker.set_asset_host_to_callback_url = config['set_asset_host_to_callback_url']
|
49
|
+
end
|
50
|
+
if Object.const_defined?("ActionController") and Facebooker.set_asset_host_to_callback_url
|
51
|
+
ActionController::Base.asset_host = config['callback_url']
|
47
52
|
end
|
53
|
+
Facebooker.timeout = config['timeout']
|
54
|
+
@facebooker_configuration = config
|
48
55
|
end
|
49
56
|
|
50
57
|
def facebooker_config
|
51
|
-
@facebooker_configuration
|
58
|
+
@facebooker_configuration || {} # to prevent pretty_errors error if the config hasn't been set yet
|
52
59
|
end
|
53
60
|
|
54
61
|
def current_adapter=(adapter_class)
|
data/lib/facebooker/logging.rb
CHANGED
data/lib/facebooker/model.rb
CHANGED
@@ -122,10 +122,12 @@ module Facebooker
|
|
122
122
|
unless hash.nil? || hash.empty?
|
123
123
|
hash.each do |key, value|
|
124
124
|
set_attr_method = "#{key}="
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
125
|
+
unless value.nil?
|
126
|
+
if respond_to?(set_attr_method)
|
127
|
+
self.__send__(set_attr_method, value)
|
128
|
+
else
|
129
|
+
Facebooker::Logging.log_info("**Warning**, Attempt to set non-attribute: #{key}",hash)
|
130
|
+
end
|
129
131
|
end
|
130
132
|
end
|
131
133
|
@populated = true
|
@@ -10,7 +10,7 @@ module Facebooker
|
|
10
10
|
include Model
|
11
11
|
attr_accessor :message, :time, :status_id
|
12
12
|
end
|
13
|
-
FIELDS = [:status, :political, :pic_small, :name, :quotes, :is_app_user, :tv, :profile_update_time, :meeting_sex, :hs_info, :timezone, :relationship_status, :hometown_location, :about_me, :wall_count, :significant_other_id, :pic_big, :music, :uid, :work_history, :sex, :religion, :notes_count, :activities, :pic_square, :movies, :has_added_app, :education_history, :birthday, :first_name, :meeting_for, :last_name, :interests, :current_location, :pic, :books, :affiliations, :locale, :profile_url, :proxied_email, :email_hashes, :allowed_restrictions]
|
13
|
+
FIELDS = [:status, :political, :pic_small, :name, :quotes, :is_app_user, :tv, :profile_update_time, :meeting_sex, :hs_info, :timezone, :relationship_status, :hometown_location, :about_me, :wall_count, :significant_other_id, :pic_big, :music, :uid, :work_history, :sex, :religion, :notes_count, :activities, :pic_square, :movies, :has_added_app, :education_history, :birthday, :first_name, :meeting_for, :last_name, :interests, :current_location, :pic, :books, :affiliations, :locale, :profile_url, :proxied_email, :email_hashes, :allowed_restrictions, :pic_with_logo, :pic_big_with_logo, :pic_small_with_logo, :pic_square_with_logo]
|
14
14
|
STANDARD_FIELDS = [:uid, :first_name, :last_name, :name, :timezone, :birthday, :sex, :affiliations, :locale, :profile_url, :pic_square]
|
15
15
|
populating_attr_accessor *FIELDS
|
16
16
|
attr_reader :affiliations
|
@@ -245,17 +245,17 @@ module Facebooker
|
|
245
245
|
#
|
246
246
|
# This does not set profile actions, that should be done with profile_action=
|
247
247
|
def profile_fbml=(markup)
|
248
|
-
set_profile_fbml(markup, nil, nil)
|
248
|
+
set_profile_fbml(markup, nil, nil, nil)
|
249
249
|
end
|
250
250
|
|
251
251
|
##
|
252
252
|
# Set the mobile profile FBML
|
253
253
|
def mobile_fbml=(markup)
|
254
|
-
set_profile_fbml(nil, markup, nil)
|
254
|
+
set_profile_fbml(nil, markup, nil,nil)
|
255
255
|
end
|
256
256
|
|
257
257
|
def profile_action=(markup)
|
258
|
-
set_profile_fbml(nil, nil, markup)
|
258
|
+
set_profile_fbml(nil, nil, markup,nil)
|
259
259
|
end
|
260
260
|
|
261
261
|
def profile_main=(markup)
|
@@ -377,6 +377,41 @@ module Facebooker
|
|
377
377
|
ret
|
378
378
|
end
|
379
379
|
end
|
380
|
+
|
381
|
+
# Get a count of unconnected friends
|
382
|
+
def getUnconnectedFriendsCount
|
383
|
+
session.post("facebook.connect.getUnconnectedFriendsCount")
|
384
|
+
end
|
385
|
+
|
386
|
+
|
387
|
+
# Unregister an array of email hashes
|
388
|
+
def self.unregister(email_hashes)
|
389
|
+
Facebooker::Session.create.post("facebook.connect.unregisterUsers",:email_hashes=>email_hashes.to_json) do |ret|
|
390
|
+
ret.each do |hash|
|
391
|
+
email_hashes.delete(hash)
|
392
|
+
end
|
393
|
+
unless email_hashes.empty?
|
394
|
+
e=Facebooker::Session::UserUnRegistrationFailed.new
|
395
|
+
e.failed_users = email_hashes
|
396
|
+
raise e
|
397
|
+
end
|
398
|
+
ret
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
402
|
+
# unregister an array of email addresses
|
403
|
+
def self.unregister_emails(emails)
|
404
|
+
emails_hash = {}
|
405
|
+
emails.each {|e| emails_hash[hash_email(e)] = e}
|
406
|
+
begin
|
407
|
+
unregister(emails_hash.keys).collect {|r| emails_hash[r]}
|
408
|
+
rescue
|
409
|
+
# re-raise with emails instead of hashes.
|
410
|
+
e = Facebooker::Session::UserUnRegistrationFailed.new
|
411
|
+
e.failed_users = $!.failed_users.collect { |f| emails_hash[f] }
|
412
|
+
raise e
|
413
|
+
end
|
414
|
+
end
|
380
415
|
|
381
416
|
def self.hash_email(email)
|
382
417
|
email = email.downcase.strip
|
data/lib/facebooker/parser.rb
CHANGED
@@ -96,6 +96,18 @@ module Facebooker
|
|
96
96
|
array_of_text_values(element("connect_registerUsers_response", data), "connect_registerUsers_response_elt")
|
97
97
|
end
|
98
98
|
end
|
99
|
+
|
100
|
+
class UnregisterUsers < Parser
|
101
|
+
def self.process(data)
|
102
|
+
array_of_text_values(element("connect_unregisterUsers_response", data), "connect_unregisterUsers_response_elt")
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
class GetUnconnectedFriendsCount < Parser
|
107
|
+
def self.process(data)
|
108
|
+
hash_or_value_for(element("connect_getUnconnectedFriendsCount_response",data)).to_i
|
109
|
+
end
|
110
|
+
end
|
99
111
|
|
100
112
|
class GetSession < Parser#:nodoc:
|
101
113
|
def self.process(data)
|
@@ -530,6 +542,8 @@ module Facebooker
|
|
530
542
|
'facebook.auth.createToken' => CreateToken,
|
531
543
|
'facebook.auth.getSession' => GetSession,
|
532
544
|
'facebook.connect.registerUsers' => RegisterUsers,
|
545
|
+
'facebook.connect.unregisterUsers' => UnregisterUsers,
|
546
|
+
'facebook.connect.getUnconnectedFriendsCount' => GetUnconnectedFriendsCount,
|
533
547
|
'facebook.users.getInfo' => UserInfo,
|
534
548
|
'facebook.users.getStandardInfo' => UserStandardInfo,
|
535
549
|
'facebook.users.setStatus' => SetStatus,
|
@@ -6,7 +6,7 @@ module Facebooker
|
|
6
6
|
include Facebooker::Rails::ProfilePublisherExtensions
|
7
7
|
def self.included(controller)
|
8
8
|
controller.extend(ClassMethods)
|
9
|
-
|
9
|
+
controller.before_filter :set_adapter
|
10
10
|
controller.before_filter :set_facebook_request_format
|
11
11
|
controller.helper_attr :facebook_session_parameters
|
12
12
|
controller.helper_method :request_comes_from_facebook?
|
@@ -45,6 +45,27 @@ module Facebooker
|
|
45
45
|
@facebook_params ||= verified_facebook_params
|
46
46
|
end
|
47
47
|
|
48
|
+
# Redirects the top window to the given url if the content is in an iframe, otherwise performs
|
49
|
+
# a normal redirect_to call.
|
50
|
+
def top_redirect_to(*args)
|
51
|
+
if request_is_facebook_iframe?
|
52
|
+
@redirect_url = url_for(*args)
|
53
|
+
render :layout => false, :inline => <<-HTML
|
54
|
+
<html><head>
|
55
|
+
<script type="text/javascript">
|
56
|
+
window.top.location.href = <%= @redirect_url.to_json -%>;
|
57
|
+
</script>
|
58
|
+
<noscript>
|
59
|
+
<meta http-equiv="refresh" content="0;url=<%=h @redirect_url %>" />
|
60
|
+
<meta http-equiv="window-target" content="_top" />
|
61
|
+
</noscript>
|
62
|
+
</head></html>
|
63
|
+
HTML
|
64
|
+
else
|
65
|
+
redirect_to(*args)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
48
69
|
def redirect_to(*args)
|
49
70
|
if request_is_for_a_facebook_canvas? and !request_is_facebook_tab?
|
50
71
|
render :text => fbml_redirect_tag(*args)
|
@@ -104,8 +125,7 @@ module Facebooker
|
|
104
125
|
|
105
126
|
#returning gracefully if the cookies aren't set or have expired
|
106
127
|
return unless parsed['session_key'] && parsed['user'] && parsed['expires'] && parsed['ss']
|
107
|
-
return unless Time.at(parsed['expires'].to_f) > Time.now || (parsed['expires'] == "0")
|
108
|
-
|
128
|
+
return unless Time.at(parsed['expires'].to_s.to_f) > Time.now || (parsed['expires'] == "0")
|
109
129
|
#if we have the unexpired cookies, we'll throw an exception if the sig doesn't verify
|
110
130
|
verify_signature(parsed,cookies[Facebooker.api_key])
|
111
131
|
|
@@ -141,7 +161,7 @@ module Facebooker
|
|
141
161
|
def create_new_facebook_session_and_redirect!
|
142
162
|
session[:facebook_session] = new_facebook_session
|
143
163
|
url_params = after_facebook_login_url.nil? ? {} : {:next=>after_facebook_login_url}
|
144
|
-
|
164
|
+
top_redirect_to session[:facebook_session].login_url(url_params) unless @installation_required
|
145
165
|
false
|
146
166
|
end
|
147
167
|
|
@@ -219,8 +239,12 @@ module Facebooker
|
|
219
239
|
!params["fb_sig_in_profile_tab"].blank?
|
220
240
|
end
|
221
241
|
|
242
|
+
def request_is_facebook_iframe?
|
243
|
+
!params["fb_sig_in_iframe"].blank?
|
244
|
+
end
|
245
|
+
|
222
246
|
def request_is_facebook_ajax?
|
223
|
-
params["fb_sig_is_mockajax"]=="1" || params["fb_sig_is_ajax"]=="1"
|
247
|
+
params["fb_sig_is_mockajax"]=="1" || params["fb_sig_is_ajax"]=="1" || params["fb_sig_is_ajax"]==true || params["fb_sig_is_mockajax"]==true
|
224
248
|
end
|
225
249
|
def xml_http_request?
|
226
250
|
request_is_facebook_ajax? || super
|
@@ -246,7 +270,7 @@ module Facebooker
|
|
246
270
|
end
|
247
271
|
|
248
272
|
def application_needs_permission(perm)
|
249
|
-
|
273
|
+
top_redirect_to(facebook_session.permission_url(perm))
|
250
274
|
end
|
251
275
|
|
252
276
|
def has_extended_permission?(perm)
|
@@ -266,14 +290,14 @@ module Facebooker
|
|
266
290
|
|
267
291
|
def application_is_not_installed_by_facebook_user
|
268
292
|
url_params = after_facebook_login_url.nil? ? {} : { :next => after_facebook_login_url }
|
269
|
-
|
293
|
+
top_redirect_to session[:facebook_session].install_url(url_params)
|
270
294
|
end
|
271
295
|
|
272
296
|
def set_facebook_request_format
|
273
297
|
if request_is_facebook_ajax?
|
274
|
-
|
275
|
-
elsif request_comes_from_facebook?
|
276
|
-
|
298
|
+
request.format = :fbjs
|
299
|
+
elsif request_comes_from_facebook? && !request_is_facebook_iframe?
|
300
|
+
request.format = :fbml
|
277
301
|
end
|
278
302
|
end
|
279
303
|
|