thorsson_facebooker2 0.0.17 → 0.0.18

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.
@@ -121,7 +121,7 @@ module Facebooker2
121
121
  def fb_signed_request_json(encoded)
122
122
  chars_to_add = 4-(encoded.size % 4)
123
123
  encoded += ("=" * chars_to_add)
124
- Base64.decode64(encoded)
124
+ base64_url_decode(encoded)
125
125
  end
126
126
 
127
127
  def facebook_params
@@ -211,14 +211,10 @@ module Facebooker2
211
211
  end
212
212
 
213
213
  ### Oauth2
214
- def oauth2_current_facebook_user
215
- oauth2_fetch_client_and_user
216
- @_current_facebook_user
217
- end
218
214
 
219
215
  def oauth2_fetch_client_and_user
220
216
  return if @_fb_user_fetched
221
- sig = oauth2_fetch_client_and_user_from_cookie if @_current_facebook_client.nil?
217
+ oauth2_fetch_client_and_user_from_session || oauth2_fetch_client_and_user_from_cookie
222
218
  @_fb_user_fetched = true
223
219
  end
224
220
 
@@ -227,12 +223,33 @@ module Facebooker2
227
223
  sig,payload = fb_cookie.split('.')
228
224
  return unless fb_signed_request_sig_valid?(sig, payload)
229
225
  data = JSON.parse(base64_url_decode(payload))
230
- authenticator = Mogli::Authenticator.new(Facebooker2.app_id, Facebooker2.secret, nil)
226
+ authenticator = Mogli::Authenticator.new(Facebooker2.app_id, Facebooker2.secret, '')
231
227
  client = Mogli::Client.create_from_code_and_authenticator(data["code"], authenticator)
232
228
  user = Mogli::User.new(:id=>data["user_id"])
229
+ oauth2_store_client_and_user_in_session(client,user)
233
230
  fb_sign_in_user_and_client(user, client)
234
231
  end
235
232
 
233
+ def oauth2_store_client_and_user_in_session(client, user)
234
+ session[:facebooker2_access_token] = client.access_token
235
+ session[:facebooker2_expiration] = client.expiration
236
+ session[:facebooker2_user_id] = user.id
237
+ end
238
+
239
+ def oauth2_fetch_client_and_user_from_session
240
+ if session[:facebooker2_access_token]
241
+ client = Mogli::Client.new(session[:facebooker2_access_token],session[:facebooker2_expiration])
242
+ user = Mogli::User.new(:id=>session[:facebooker2_user_id])
243
+ fb_sign_in_user_and_client(user, client)
244
+ end
245
+ end
246
+
247
+ def fb_logout!
248
+ session[:facebooker2_access_token]=nil
249
+ session[:facebooker2_expiration]=nil
250
+ session[:facebooker2_user_id]=nil
251
+ end
252
+
236
253
 
237
254
  def base64_url_decode(encoded)
238
255
  chars_to_add = 4-(encoded.size % 4)
@@ -242,4 +259,4 @@ module Facebooker2
242
259
 
243
260
  end
244
261
  end
245
- end
262
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thorsson_facebooker2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.18
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-28 00:00:00.000000000 Z
12
+ date: 2013-02-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mogli