omniauth-facebook 6.0.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3b8b67acd7d8c1557f82b621f96931ce962e50567c1c0c0fde99c073ed9d662
4
- data.tar.gz: cff801f45a35bbb51d51729fc3e90ffc0a58bb9a175e59274755e7785256165c
3
+ metadata.gz: de07dc27eb8810abd1b2a688449e1ad0360f063a5c233c0c36f1902a721be927
4
+ data.tar.gz: f938ca12195ac5e3581e39802d5f54e82bae3fc22e71db51d1ce4a62b25750cd
5
5
  SHA512:
6
- metadata.gz: badf485d3c8bdd1d6c3fa15de6e8524aa0421c365a571ce655f66c34d61270580fb9669c297652eb51c94c03111a52310a8a70813a6de88d95ea4e749a01c118
7
- data.tar.gz: 0a064f3fc5060dfef9bee851e5188ba02c31fb62d3b07b4292699d8922059c5cf371825d94699f1b489a1a5c19c36a18024d92bdb5d79baa9b37d086c6e161b9
6
+ metadata.gz: 90f607d371c1e1b73cfb854d9fb1e0f7abb5e65d8e08d2043de57f20079ac4bcff5461f3bd3c536c47506ec174029a49cb500d536485649e4ac044cf5009ae8a
7
+ data.tar.gz: c30e200b472c2ddfbf9566ff14c2ca34e408a0380d41ed8328a2580fa21a3349f214767211d7574a744e9a8d35f61e44423a643a6a42419fa2f96d6f73ba38fd
data/.travis.yml CHANGED
@@ -1,10 +1,6 @@
1
- before_install:
2
- - gem update bundler
3
- - bundle --version
4
- - gem update --system
5
- - gem --version
1
+ language: ruby
2
+ cache: bundler
6
3
  rvm:
4
+ - 2.7
7
5
  - 2.6
8
6
  - 2.5
9
- - 2.4
10
- - 2.3
data/CHANGELOG.md CHANGED
@@ -1,4 +1,16 @@
1
- ## 6.0.0 2020-01-27)
1
+ ## 8.0.0 (2020-10-20)
2
+
3
+ Changes:
4
+
5
+ - user profile picture link includes access token (#344, @anklos)
6
+
7
+ ## 7.0.0 (2020-08-03)
8
+
9
+ Changes:
10
+
11
+ - bumped version of FB Graph API to v4.0
12
+
13
+ ## 6.0.0 (2020-01-27)
2
14
 
3
15
  Changes:
4
16
 
data/README.md CHANGED
@@ -41,7 +41,7 @@ Option name | Default | Explanation
41
41
  `scope` | `email` | A comma-separated list of permissions you want to request from the user. See the Facebook docs for a full list of available permissions: https://developers.facebook.com/docs/reference/login/
42
42
  `display` | `page` | 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/
43
43
  `image_size` | `square` | Set the size for the returned image url in the auth hash. Valid options include `square` (50x50), `small` (50 pixels wide, variable height), `normal` (100 pixels wide, variable height), or `large` (about 200 pixels wide, variable height). Additionally, you can request a picture of a specific size by setting this option to a hash with `:width` and `:height` as keys. This will return an available profile picture closest to the requested size and requested aspect ratio. If only `:width` or `:height` is specified, we will return a picture whose width or height is closest to the requested size, respectively.
44
- `info_fields` | 'name,email' | Specify exactly which fields should be returned when getting the user's info. Value should be a comma-separated string as per https://developers.facebook.com/docs/graph-api/reference/user/ (only `/me` endpoint).
44
+ `info_fields` | `name,email` | Specify exactly which fields should be returned when getting the user's info. Value should be a comma-separated string as per https://developers.facebook.com/docs/graph-api/reference/user/ (only `/me` endpoint).
45
45
  `locale` | | Specify locale which should be used when getting the user's info. Value should be locale string as per https://developers.facebook.com/docs/reference/api/locale/.
46
46
  `auth_type` | | Optionally specifies the requested authentication features as a comma-separated list, as per https://developers.facebook.com/docs/facebook-login/reauthentication/. 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). Use 'rerequest' when you want to request premissions. Default is `nil`.
47
47
  `secure_image_url` | `false` | Set to `true` to use https for the avatar image url returned in the auth hash.
@@ -58,14 +58,14 @@ end
58
58
 
59
59
  ### API Version
60
60
 
61
- OmniAuth Facebook uses versioned API endpoints by default (current v3.0). You can configure a different version via `client_options` hash passed to `provider`, specifically you should change the version in the `site` and `authorize_url` parameters. For example, to change to v4.0 (assuming that exists):
61
+ OmniAuth Facebook uses versioned API endpoints by default (current v4.0). You can configure a different version via `client_options` hash passed to `provider`, specifically you should change the version in the `site` and `authorize_url` parameters. For example, to change to v7.0 (assuming that exists):
62
62
 
63
63
  ```ruby
64
64
  use OmniAuth::Builder do
65
65
  provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'],
66
66
  client_options: {
67
- site: 'https://graph.facebook.com/v4.0',
68
- authorize_url: "https://www.facebook.com/v4.0/dialog/oauth"
67
+ site: 'https://graph.facebook.com/v7.0',
68
+ authorize_url: "https://www.facebook.com/v7.0/dialog/oauth"
69
69
  }
70
70
  end
71
71
  ```
data/example/app.rb CHANGED
@@ -29,7 +29,7 @@ get '/client-side' do
29
29
  window.fbAsyncInit = function() {
30
30
  FB.init({
31
31
  appId: '#{ENV['FACEBOOK_APP_ID']}',
32
- version: 'v3.0',
32
+ version: 'v4.0',
33
33
  cookie: true // IMPORTANT must enable cookies to allow the server to access the session
34
34
  });
35
35
  console.log("fb init");
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module Facebook
3
- VERSION = '6.0.0'
3
+ VERSION = '8.0.0'
4
4
  end
5
5
  end
@@ -12,8 +12,8 @@ module OmniAuth
12
12
  DEFAULT_SCOPE = 'email'
13
13
 
14
14
  option :client_options, {
15
- site: 'https://graph.facebook.com/v3.0',
16
- authorize_url: "https://www.facebook.com/v3.0/dialog/oauth",
15
+ site: 'https://graph.facebook.com/v4.0',
16
+ authorize_url: "https://www.facebook.com/v4.0/dialog/oauth",
17
17
  token_url: 'oauth/access_token'
18
18
  }
19
19
 
@@ -161,13 +161,15 @@ module OmniAuth
161
161
  uri_class = options[:secure_image_url] ? URI::HTTPS : URI::HTTP
162
162
  site_uri = URI.parse(client.site)
163
163
  url = uri_class.build({host: site_uri.host, path: "#{site_uri.path}/#{uid}/picture"})
164
+ query = { access_token: access_token.token }
164
165
 
165
- query = if options[:image_size].is_a?(String) || options[:image_size].is_a?(Symbol)
166
- { type: options[:image_size] }
166
+ if options[:image_size].is_a?(String) || options[:image_size].is_a?(Symbol)
167
+ query[:type] = options[:image_size]
167
168
  elsif options[:image_size].is_a?(Hash)
168
- options[:image_size]
169
+ query.merge!(options[:image_size])
169
170
  end
170
- url.query = Rack::Utils.build_query(query) if query
171
+
172
+ url.query = Rack::Utils.build_query(query)
171
173
 
172
174
  url.to_s
173
175
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
8
8
  s.authors = ['Mark Dodwell', 'Josef Šimánek']
9
9
  s.email = ['mark@madeofcode.com', 'retro@ballgag.cz']
10
10
  s.summary = 'Facebook OAuth2 Strategy for OmniAuth'
11
- s.homepage = 'https://github.com/mkdynamic/omniauth-facebook'
11
+ s.homepage = 'https://github.com/simi/omniauth-facebook'
12
12
  s.license = 'MIT'
13
13
 
14
14
  s.files = `git ls-files`.split("\n")
@@ -9,11 +9,11 @@ end
9
9
 
10
10
  class ClientTest < StrategyTestCase
11
11
  test 'has correct Facebook site' do
12
- assert_equal 'https://graph.facebook.com/v3.0', strategy.client.site
12
+ assert_equal 'https://graph.facebook.com/v4.0', strategy.client.site
13
13
  end
14
14
 
15
15
  test 'has correct authorize url' do
16
- assert_equal 'https://www.facebook.com/v3.0/dialog/oauth', strategy.client.options[:authorize_url]
16
+ assert_equal 'https://www.facebook.com/v4.0/dialog/oauth', strategy.client.options[:authorize_url]
17
17
  end
18
18
 
19
19
  test 'has correct token url with versioning' do
@@ -95,41 +95,52 @@ class UidTest < StrategyTestCase
95
95
  end
96
96
 
97
97
  class InfoTest < StrategyTestCase
98
+ def setup
99
+ super
100
+ @access_token = stub('OAuth2::AccessToken')
101
+ @access_token.stubs(:token).returns('test_access_token')
102
+ end
103
+
98
104
  test 'returns the secure facebook avatar url when `secure_image_url` option is specified' do
99
105
  @options = { secure_image_url: true }
100
106
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
101
107
  strategy.stubs(:raw_info).returns(raw_info)
102
- assert_equal 'https://graph.facebook.com/v3.0/321/picture', strategy.info['image']
108
+ strategy.stubs(:access_token).returns(@access_token)
109
+ assert_equal 'https://graph.facebook.com/v4.0/321/picture?access_token=test_access_token', strategy.info['image']
103
110
  end
104
111
 
105
112
  test 'returns the image_url based of the client site' do
106
113
  @options = { secure_image_url: true, client_options: {site: "https://blah.facebook.com/v2.2"}}
107
114
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
108
115
  strategy.stubs(:raw_info).returns(raw_info)
109
- assert_equal 'https://blah.facebook.com/v2.2/321/picture', strategy.info['image']
116
+ strategy.stubs(:access_token).returns(@access_token)
117
+ assert_equal "https://blah.facebook.com/v2.2/321/picture?access_token=test_access_token", strategy.info['image']
110
118
  end
111
119
 
112
120
  test 'returns the image with size specified in the `image_size` option' do
113
121
  @options = { image_size: 'normal' }
114
122
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
115
123
  strategy.stubs(:raw_info).returns(raw_info)
116
- assert_equal 'http://graph.facebook.com/v3.0/321/picture?type=normal', strategy.info['image']
124
+ strategy.stubs(:access_token).returns(@access_token)
125
+ assert_equal 'http://graph.facebook.com/v4.0/321/picture?access_token=test_access_token&type=normal', strategy.info['image']
117
126
  end
118
127
 
119
128
  test 'returns the image with size specified as a symbol in the `image_size` option' do
120
129
  @options = { image_size: :normal }
121
130
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
122
131
  strategy.stubs(:raw_info).returns(raw_info)
123
- assert_equal 'http://graph.facebook.com/v3.0/321/picture?type=normal', strategy.info['image']
132
+ strategy.stubs(:access_token).returns(@access_token)
133
+ assert_equal 'http://graph.facebook.com/v4.0/321/picture?access_token=test_access_token&type=normal', strategy.info['image']
124
134
  end
125
135
 
126
136
  test 'returns the image with width and height specified in the `image_size` option' do
127
137
  @options = { image_size: { width: 123, height: 987 } }
128
138
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
129
139
  strategy.stubs(:raw_info).returns(raw_info)
140
+ strategy.stubs(:access_token).returns(@access_token)
130
141
  assert_match 'width=123', strategy.info['image']
131
142
  assert_match 'height=987', strategy.info['image']
132
- assert_match 'http://graph.facebook.com/v3.0/321/picture?', strategy.info['image']
143
+ assert_match 'http://graph.facebook.com/v4.0/321/picture?access_token=test_access_token', strategy.info['image']
133
144
  end
134
145
  end
135
146
 
@@ -138,6 +149,10 @@ class InfoTestOptionalDataPresent < StrategyTestCase
138
149
  super
139
150
  @raw_info ||= { 'name' => 'Fred Smith' }
140
151
  strategy.stubs(:raw_info).returns(@raw_info)
152
+
153
+ access_token = stub('OAuth2::AccessToken')
154
+ access_token.stubs(:token).returns('test_access_token')
155
+ strategy.stubs(:access_token).returns(access_token)
141
156
  end
142
157
 
143
158
  test 'returns the name' do
@@ -176,7 +191,7 @@ class InfoTestOptionalDataPresent < StrategyTestCase
176
191
 
177
192
  test 'returns the facebook avatar url' do
178
193
  @raw_info['id'] = '321'
179
- assert_equal 'http://graph.facebook.com/v3.0/321/picture', strategy.info['image']
194
+ assert_equal 'http://graph.facebook.com/v4.0/321/picture?access_token=test_access_token', strategy.info['image']
180
195
  end
181
196
 
182
197
  test 'returns the Facebook link as the Facebook url' do
@@ -215,6 +230,10 @@ class InfoTestOptionalDataNotPresent < StrategyTestCase
215
230
  super
216
231
  @raw_info ||= { 'name' => 'Fred Smith' }
217
232
  strategy.stubs(:raw_info).returns(@raw_info)
233
+
234
+ access_token = stub('OAuth2::AccessToken')
235
+ access_token.stubs(:token).returns('test_access_token')
236
+ strategy.stubs(:access_token).returns(access_token)
218
237
  end
219
238
 
220
239
  test 'has no email key' do
@@ -258,7 +277,7 @@ class RawInfoTest < StrategyTestCase
258
277
  @options = {appsecret_proof: @appsecret_proof, fields: 'name,email'}
259
278
  end
260
279
 
261
- test 'performs a GET to https://graph.facebook.com/v3.0/me' do
280
+ test 'performs a GET to https://graph.facebook.com/v4.0/me' do
262
281
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
263
282
  strategy.stubs(:access_token).returns(@access_token)
264
283
  params = {params: @options}
@@ -266,7 +285,7 @@ class RawInfoTest < StrategyTestCase
266
285
  strategy.raw_info
267
286
  end
268
287
 
269
- test 'performs a GET to https://graph.facebook.com/v3.0/me with locale' do
288
+ test 'performs a GET to https://graph.facebook.com/v4.0/me with locale' do
270
289
  @options.merge!({ locale: 'cs_CZ' })
271
290
  strategy.stubs(:access_token).returns(@access_token)
272
291
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
@@ -275,7 +294,7 @@ class RawInfoTest < StrategyTestCase
275
294
  strategy.raw_info
276
295
  end
277
296
 
278
- test 'performs a GET to https://graph.facebook.com/v3.0/me with info_fields' do
297
+ test 'performs a GET to https://graph.facebook.com/v4.0/me with info_fields' do
279
298
  @options.merge!({info_fields: 'about'})
280
299
  strategy.stubs(:access_token).returns(@access_token)
281
300
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
@@ -284,7 +303,7 @@ class RawInfoTest < StrategyTestCase
284
303
  strategy.raw_info
285
304
  end
286
305
 
287
- test 'performs a GET to https://graph.facebook.com/v3.0/me with default info_fields' do
306
+ test 'performs a GET to https://graph.facebook.com/v4.0/me with default info_fields' do
288
307
  strategy.stubs(:access_token).returns(@access_token)
289
308
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
290
309
  params = {params: {appsecret_proof: @appsecret_proof, fields: 'name,email'}}
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: 6.0.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Dodwell
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-01-27 00:00:00.000000000 Z
12
+ date: 2020-10-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: omniauth-oauth2
@@ -98,7 +98,7 @@ files:
98
98
  - test/signed_request_test.rb
99
99
  - test/strategy_test.rb
100
100
  - test/support/shared_examples.rb
101
- homepage: https://github.com/mkdynamic/omniauth-facebook
101
+ homepage: https://github.com/simi/omniauth-facebook
102
102
  licenses:
103
103
  - MIT
104
104
  metadata: {}
@@ -117,8 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  requirements: []
120
- rubyforge_project:
121
- rubygems_version: 2.7.6.2
120
+ rubygems_version: 3.2.0.pre1
122
121
  signing_key:
123
122
  specification_version: 4
124
123
  summary: Facebook OAuth2 Strategy for OmniAuth