rfacebook 0.9.5 → 0.9.6

Sign up to get free protection for your applications and to get access to all the features.
data/lib/facepricot.rb CHANGED
@@ -107,6 +107,10 @@ module RFacebook
107
107
  def to_s
108
108
  return @doc.containers[0].inner_html
109
109
  end
110
+
111
+ def get(key)
112
+ return make_facepricot_chain(key.to_s, @doc.containers[0])
113
+ end
110
114
 
111
115
  end
112
116
 
@@ -123,6 +127,10 @@ module RFacebook
123
127
  return make_facepricot_chain(methodSymbol.to_s, @doc)
124
128
  end
125
129
 
130
+ def get(key)
131
+ return make_facepricot_chain(key.to_s, @doc)
132
+ end
133
+
126
134
  end
127
135
 
128
136
 
@@ -107,20 +107,31 @@ module RFacebook
107
107
 
108
108
  # if we are in the canvas, iframe, or mock ajax, we should be able to activate the session here
109
109
  if (!rfacebook_session_holder.is_valid? and (in_facebook_canvas? or in_facebook_frame? or in_mock_ajax?))
110
-
110
+
111
111
  # then try to activate it somehow (or retrieve from previous state)
112
112
  # these might be nil
113
113
  facebookUid = fbparams["user"]
114
114
  facebookSessionKey = fbparams["session_key"]
115
115
  expirationTime = fbparams["expires"]
116
-
116
+
117
117
  if (facebookUid and facebookSessionKey and expirationTime)
118
118
  # we have the user id and key from the fb_sig_ params, activate the session
119
119
  rfacebook_session_holder.activate_with_previous_session(facebookSessionKey, facebookUid, expirationTime)
120
- RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: Activated session from inside the canvas"
120
+ RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: Activated session from inside the canvas (user=#{facebookUid}, session_key=#{facebookSessionKey}, expires=#{expirationTime})"
121
121
  else
122
- RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK WARNING: Tried to activate session from inside the canvas, but failed"
122
+ RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK WARNING: Tried to get a valid Facebook session from POST params, but failed"
123
123
  end
124
+
125
+ end
126
+
127
+ # if we still don't have a session, check the Rails session
128
+ # (used for external and iframe apps when fb_sig POST params weren't present)
129
+ if (!rfacebook_session_holder.is_valid? and session[:rfacebook_session] and session[:rfacebook_session].is_valid?)
130
+
131
+ # grab saved Facebook session from Rails session
132
+ RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: grabbing Facebook session from Rails session"
133
+ @rfacebook_session_holder = session[:rfacebook_session]
134
+ @rfacebook_session_holder.logger = RAILS_DEFAULT_LOGGER
124
135
 
125
136
  end
126
137
 
@@ -154,7 +165,8 @@ module RFacebook
154
165
  end
155
166
 
156
167
  def in_mock_ajax?
157
- return (params["fb_mockajax_url"] != nil)
168
+ is_mockajax = params["fb_sig_is_mockajax"]
169
+ return (is_mockajax == "1" || is_mockajax == true || params["fb_mockajax_url"] != nil)
158
170
  end
159
171
 
160
172
  def in_external_app?
@@ -169,61 +181,52 @@ module RFacebook
169
181
  end
170
182
 
171
183
  def facebook_platform_signature_verified?
172
- return (fbparams and fparams.size > 0)
184
+ return (fbparams and fbparams.size > 0)
173
185
  end
174
186
 
175
187
  # TODO: define something along the lines of is_logged_in_to_facebook? that returns fbsession.is_ready? perhaps
176
188
 
177
189
  ################################################################################################
178
190
  ################################################################################################
179
- # :section: Before_filters
191
+ # :section: before_filters
180
192
  ################################################################################################
181
193
 
182
194
  def handle_facebook_login
183
195
 
184
- if !in_facebook_canvas?
185
-
186
- if params["auth_token"]
196
+ # we only do this when we don't have the fb_sig to give us a session
197
+ # in these cases, we always check to see if we got an auth_token
198
+ # from redirecting to login to facebook
199
+ if (!facebook_platform_signature_verified? and params["auth_token"])
200
+
201
+ # activate with the auth token
202
+ RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: attempting to create a new Facebook session from auth_token"
203
+ staleToken = false
204
+ begin
187
205
 
188
- # activate with the auth token
189
- RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: attempting to create a new Facebook session from auth_token"
190
- staleToken = false
191
- begin
192
-
193
- # try to use the auth_token
194
- rfacebook_session_holder.activate_with_token(params["auth_token"])
195
-
196
- rescue StandardError => e
197
- RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: Tried to use a stale auth_token"
198
- staleToken = true
199
- end
200
-
201
- # template method call upon success
202
- if (rfacebook_session_holder.is_valid? and !staleToken)
203
- RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: Login was successful, calling finish_facebook_login"
204
- if in_external_app?
205
- finish_facebook_login
206
- end
207
- end
206
+ # try to use the auth_token
207
+ rfacebook_session_holder.activate_with_token(params["auth_token"])
208
208
 
209
- elsif (session[:rfacebook_session] and session[:rfacebook_session].is_valid?)
209
+ rescue StandardError => e
210
+ RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: Tried to use a stale auth_token"
211
+ staleToken = true
212
+ end
210
213
 
211
- # grab saved Facebook session from Rails session
212
- RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: grabbing Facebook session from Rails session"
213
- @rfacebook_session_holder = session[:rfacebook_session]
214
- @rfacebook_session_holder.logger = RAILS_DEFAULT_LOGGER
215
-
214
+ # template method call upon success
215
+ if (rfacebook_session_holder.is_valid? and !staleToken)
216
+ RAILS_DEFAULT_LOGGER.debug "** RFACEBOOK INFO: Login was successful, calling finish_facebook_login"
217
+ if in_external_app?
218
+ finish_facebook_login
219
+ end
216
220
  end
217
-
221
+
218
222
  # warning logs
219
223
  if !rfacebook_session_holder.is_valid?
220
- RAILS_DEFAULT_LOGGER.info "** RFACEBOOK WARNING: Facebook session could not be activated (from handle_facebook_login)"
224
+ RAILS_DEFAULT_LOGGER.info "** RFACEBOOK WARNING: Facebook session could not be activated with auth_token"
221
225
  end
222
-
226
+
223
227
  end
224
228
 
225
229
  return true
226
-
227
230
  end
228
231
 
229
232
  def require_facebook_login
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.5
7
- date: 2007-09-04 00:00:00 -04:00
6
+ version: 0.9.6
7
+ date: 2007-09-10 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