omniauth-facebook 1.3.0 → 1.4.0

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.

Potentially problematic release.


This version of omniauth-facebook might be problematic. Click here for more details.

data/README.md CHANGED
@@ -34,6 +34,8 @@ You can configure several options, which you pass in to the `provider` method vi
34
34
 
35
35
  * `scope`: A comma-separated list of permissions you want to request from the user. See the Facebook docs for a full list of available permissions: http://developers.facebook.com/docs/reference/api/permissions. Default: `email`
36
36
  * `display`: The display context to show the authentication page. Options are: `page`, `popup` and `touch`. Read the Facebook docs for more details: https://developers.facebook.com/docs/reference/dialogs/oauth/. Default: `page`
37
+ * `auth_type`: Optionally specifies the requested authentication features as a comma-separated list, as per https://developers.facebook.com/docs/authentication/reauthentication/.
38
+ Valid values are `https` (checks for the presence of the secure cookie and asks for re-authentication if it is not present), and `reauthenticate` (asks the user to re-authenticate unconditionally). Default is `nil`.
37
39
  * `secure_image_url`: Set to `true` to use https for the avatar image url returned in the auth hash. Default is `false`.
38
40
  * `image_size`: Set the size for the returned image url in the auth hash. Valid options are `square` (50x50), `small` (50 pixels wide, variable height), `normal` (100 pixels wide, variable height), or `large` (about 200 pixels wide, variable height). Default is `square` (50x50).
39
41
 
@@ -54,7 +56,7 @@ You can also pass through a `state` param which will be passed along to the call
54
56
 
55
57
  ### Custom Callback URL/Path
56
58
 
57
- You can set a custom `callback_url` or `callback_path` option to override the default value. See [OmniAuth::Strategy#callback_url](https://github.com/intridea/omniauth/blob/master/lib/omniauth/strategy.rb#L387) for more details on the default.
59
+ You can set a custom `callback_url` or `callback_path` option to override the default value. See [OmniAuth::Strategy#callback_url](https://github.com/intridea/omniauth/blob/master/lib/omniauth/strategy.rb#L411) for more details on the default.
58
60
 
59
61
  ## Auth Hash
60
62
 
@@ -120,7 +122,7 @@ When you call `/auth/facebook/callback` in the success callback of `FB.login` th
120
122
  2. extract the authorization code contained in it
121
123
  3. and hit Facebook and obtain an access token which will get placed in the `request.env['omniauth.auth']['credentials']` hash.
122
124
 
123
- Note that this access token will be the same token obtained and available in the client through the hash [as (detailed in the Facebook docs](https://developers.facebook.com/docs/authentication/client-side/)).
125
+ Note that this access token will be the same token obtained and available in the client through the hash [as detailed in the Facebook docs](https://developers.facebook.com/docs/authentication/client-side/).
124
126
 
125
127
  ## Canvas Apps
126
128
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- omniauth-facebook (1.2.0)
4
+ omniauth-facebook (1.3.0)
5
5
  omniauth-oauth2 (~> 1.0.2)
6
6
 
7
7
  GEM
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module Facebook
3
- VERSION = "1.3.0"
3
+ VERSION = "1.4.0"
4
4
  end
5
5
  end
@@ -24,7 +24,7 @@ module OmniAuth
24
24
  :param_name => 'access_token'
25
25
  }
26
26
 
27
- option :authorize_options, [:scope, :display]
27
+ option :authorize_options, [:scope, :display, :auth_type]
28
28
 
29
29
  uid { raw_info['id'] }
30
30
 
@@ -46,17 +46,10 @@ module OmniAuth
46
46
  })
47
47
  end
48
48
 
49
- credentials do
50
- prune!({
51
- 'expires' => access_token.expires?,
52
- 'expires_at' => access_token.expires_at
53
- })
54
- end
55
-
56
49
  extra do
57
- prune!({
58
- 'raw_info' => raw_info
59
- })
50
+ hash = {}
51
+ hash['raw_info'] = raw_info unless skip_info?
52
+ prune! hash
60
53
  end
61
54
 
62
55
  def raw_info
@@ -64,7 +57,12 @@ module OmniAuth
64
57
  end
65
58
 
66
59
  def build_access_token
67
- if signed_request_contains_access_token?
60
+ if access_token = request.params["access_token"]
61
+ ::OAuth2::AccessToken.from_hash(
62
+ client,
63
+ {"access_token" => access_token}.update(access_token_options)
64
+ )
65
+ elsif signed_request_contains_access_token?
68
66
  hash = signed_request.clone
69
67
  ::OAuth2::AccessToken.new(
70
68
  client,
@@ -245,16 +245,17 @@ describe OmniAuth::Strategies::Facebook do
245
245
  describe '#raw_info' do
246
246
  before :each do
247
247
  @access_token = double('OAuth2::AccessToken')
248
- subject.stub(:access_token) { @access_token }
249
248
  end
250
249
 
251
250
  it 'performs a GET to https://graph.facebook.com/me' do
251
+ subject.stub(:access_token) { @access_token }
252
252
  @access_token.stub(:get) { double('OAuth2::Response').as_null_object }
253
253
  @access_token.should_receive(:get).with('/me')
254
254
  subject.raw_info
255
255
  end
256
256
 
257
257
  it 'returns a Hash' do
258
+ subject.stub(:access_token) { @access_token }
258
259
  @access_token.stub(:get).with('/me') do
259
260
  raw_response = double('Faraday::Response')
260
261
  raw_response.stub(:body) { '{ "ohai": "thar" }' }
@@ -267,6 +268,7 @@ describe OmniAuth::Strategies::Facebook do
267
268
  end
268
269
 
269
270
  it 'returns an empty hash when the response is false' do
271
+ subject.stub(:access_token) { @access_token }
270
272
  @access_token.stub(:get).with('/me') do
271
273
  response = double('OAuth2::Response')
272
274
  response.stub(:parsed => false)
@@ -274,6 +276,12 @@ describe OmniAuth::Strategies::Facebook do
274
276
  end
275
277
  subject.raw_info.should be_a(Hash)
276
278
  end
279
+
280
+ it 'should not include raw_info in extras hash when skip_info is specified' do
281
+ @options = { :skip_info => true }
282
+ subject.stub(:raw_info) { { :foo => 'bar' } }
283
+ subject.extra.should_not have_key('raw_info')
284
+ end
277
285
  end
278
286
 
279
287
  describe '#credentials' do
@@ -463,6 +471,22 @@ describe OmniAuth::Strategies::Facebook do
463
471
  result.expires_at.should eq(@payload['expires'])
464
472
  end
465
473
  end
474
+
475
+ describe 'params contain an access token string' do
476
+ before do
477
+ @request.stub(:params) do
478
+ { 'access_token' => 'm4c0d3z' }
479
+ end
480
+
481
+ subject.stub(:callback_url) { '/' }
482
+ end
483
+
484
+ it 'returns a new access token' do
485
+ result = subject.build_access_token
486
+ result.should be_an_instance_of(::OAuth2::AccessToken)
487
+ result.token.should eq('m4c0d3z')
488
+ end
489
+ end
466
490
  end
467
491
 
468
492
  private
@@ -19,6 +19,11 @@ shared_examples 'an oauth2 strategy' do
19
19
  subject.authorize_params['scope'].should eq('bar')
20
20
  subject.authorize_params['foo'].should eq('baz')
21
21
  end
22
+
23
+ it 'should exclude top-level options that are not passed' do
24
+ @options = { :authorize_options => [:bar] }
25
+ subject.authorize_params.should_not have_keys(:bar, 'bar')
26
+ end
22
27
  end
23
28
 
24
29
  describe '#token_params' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-facebook
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
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: 2012-05-05 00:00:00.000000000 Z
12
+ date: 2012-06-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: omniauth-oauth2