omniauth-facebook 3.0.0 → 7.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
- SHA1:
3
- metadata.gz: 224e91c8d4a4c7c48c231c2f78984cd0cfe1c307
4
- data.tar.gz: 49914f654b85df17a35c191dc7e9ee34cebf596f
2
+ SHA256:
3
+ metadata.gz: e2f4d990ad5efff4639bceb6166326edde272c174245f543841bf513e6cb6e8a
4
+ data.tar.gz: 6b26e2b46ae31387b0c57596355838f231a926857db3a01e0b0cff27a39e7f2b
5
5
  SHA512:
6
- metadata.gz: d3ad4f0e61e6b00294a12e80a8d389b58c7230797fe3617585fdf4d39c9dd0da2481d1fb1da476543a3e14c5bb42891d70cadd98f540a0c1ec859237581fcc9b
7
- data.tar.gz: e980bb1e8a8fd53bd844ad8b8d41c20be01eb3ada85322748c29e1cf68e24f99e137d1719b69f047dcea53646f85ce96f9bfb16fa0237ddc5d494c5dd4ecb4b8
6
+ metadata.gz: eb8dd5746bdaf99f7541009a198c4bf1fea00eef655808bee2ef235ee52d593e06666a3251a05266d0b602b79d96604790d801ae7b2da72e2931dd17e0491348
7
+ data.tar.gz: 8c080431786e1c765e2457da31b6290f86602aff576139fcc8328160c516e0e4d4d557b68c406b1fb1fe85a5f83bdb47bc60d639fa0652088c4aa64aa4ed0275
@@ -0,0 +1,23 @@
1
+ name: Mark stale issues and pull requests
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "0 0 * * *"
6
+
7
+ jobs:
8
+ stale:
9
+
10
+ runs-on: ubuntu-latest
11
+
12
+ steps:
13
+ - uses: actions/stale@v1
14
+ with:
15
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
16
+ stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
17
+ stale-pr-message: 'This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
18
+ stale-issue-label: 'no-issue-activity'
19
+ stale-pr-label: 'no-pr-activity'
20
+ days-before-stale: 30
21
+ days-before-close: 5
22
+ exempt-pr-label: 'pinned'
23
+ exempt-issue-label: 'pinned'
data/.gitignore CHANGED
@@ -4,6 +4,6 @@
4
4
  /Gemfile.lock
5
5
  pkg/*
6
6
  .powenv
7
+ .powder
7
8
  tmp
8
9
  bin
9
- example/app.log
@@ -1,16 +1,10 @@
1
1
  before_install:
2
2
  - gem update bundler
3
3
  - bundle --version
4
- - gem update --system 2.1.11
4
+ - gem update --system
5
5
  - gem --version
6
6
  rvm:
7
- - 1.8.7
8
- - 1.9.2
9
- - 1.9.3
10
- - 2.0.0
11
- - 2.1
12
- - jruby
13
- - rbx
14
- matrix:
15
- allow_failures:
16
- - rvm: rbx
7
+ - 2.6
8
+ - 2.5
9
+ - 2.4
10
+ - 2.3
@@ -1,29 +1,58 @@
1
+ ## 7.0.0 (2020-08-03)
2
+
3
+ Changes:
4
+
5
+ - bumped version of FB Graph API to v4.0
6
+
7
+ ## 6.0.0 (2020-01-27)
8
+
9
+ Changes:
10
+
11
+ - bumped version of FB Graph API to v3.0
12
+
13
+ ## 5.0.0 (2018-03-29)
14
+
15
+ Changes:
16
+
17
+ - bumped version of FB Graph API to v2.10 (#297, @piotrjaworski)
18
+ - use only CRuby 2.0+ on CI (#298, @simi)
19
+
20
+ ## 4.0.0 (2016-07-26)
21
+
22
+ Changes:
23
+
24
+ - drop support for Ruby < 1.9.3 (@mkdynamic)
25
+ - switch to versioned FB APIs, currently using v2.6 (#245, @printercu, @mkdynamic)
26
+ - remove deprecated :nickname field from README example (#223, @abelorian)
27
+ - add Ruby 2.2 + 2.3.0 to CI (#225, @tricknotes, @mkdynamic, @anoraak)
28
+ - update example app (@mkdynamic)
29
+
1
30
  ## 3.0.0 (2015-10-26)
2
31
 
3
32
  Changes:
4
33
 
5
- - Remove query string from redirect_uri on callback by default (#221, @gioblu)
6
- - Signed request parsing extracted to `OmniAuth::Facebook::SignedRequest` class. (#183, @simi, @Vrael)
7
- - Change default value of `info_fields` to `name,email` for the [graph-api-v2.4](https://developers.facebook.com/blog/post/2015/07/08/graph-api-v2.4/). ([#209](https://github.com/mkdynamic/omniauth-facebook/pull/209))
34
+ - remove query string from redirect_uri on callback by default (#221, @gioblu)
35
+ - signed request parsing extracted to `OmniAuth::Facebook::SignedRequest` class. (#183, @simi, @Vrael)
36
+ - change default value of `info_fields` to `name,email` for the [graph-api-v2.4](https://developers.facebook.com/blog/post/2015/07/08/graph-api-v2.4/). ([#209](https://github.com/mkdynamic/omniauth-facebook/pull/209))
8
37
 
9
38
  ## 2.0.1 (2015-02-21)
10
39
 
11
40
  Bugfixes:
12
41
 
13
- - Allow versioning by not forcing absolute path for graph requests (#180, @frausto)
14
- - Allow the image_size option to be set as a symbol. (#182, @jgrau)
42
+ - allow versioning by not forcing absolute path for graph requests (#180, @frausto)
43
+ - allow the image_size option to be set as a symbol. (#182, @jgrau)
15
44
 
16
45
  ## 2.0.0 (2014-08-07)
17
46
 
18
47
  Changes:
19
48
 
20
- - remove support for canvas app flow (765ed9, @mkdynamic)
49
+ - remove support for canvas app flow (765ed9, @mkdynamic)
21
50
 
22
51
  Bugfixes:
23
52
 
24
- - bump omniauth-oauth2 dependency which addresses CVE-2012-6134 (#162, @linedotstar)
25
- - rescue `NoAuthorizationCodeError` in callback_phase (a0036b, @tomoya55)
26
- - fix CSRF exception when using FB JS SDK and parsing signed request (765ed9, @mkdynamic)
53
+ - bump omniauth-oauth2 dependency which addresses CVE-2012-6134 (#162, @linedotstar)
54
+ - rescue `NoAuthorizationCodeError` in callback_phase (a0036b, @tomoya55)
55
+ - fix CSRF exception when using FB JS SDK and parsing signed request (765ed9, @mkdynamic)
27
56
 
28
57
  ## 1.6.0 (2014-01-13)
29
58
 
data/Gemfile CHANGED
@@ -2,6 +2,8 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
+ gem 'rack', RUBY_VERSION < '2.2.2' ? '~> 1.6' : '>= 2.0'
6
+
5
7
  platforms :rbx do
6
8
  gem 'rubysl', '~> 2.0'
7
9
  end
data/README.md CHANGED
@@ -1,16 +1,12 @@
1
- **IMPORTANT: If you're running < 1.5.1, please upgrade to the latest version to address 3 security vulnerabilities.
2
- More details [here](https://github.com/mkdynamic/omniauth-facebook/wiki/CSRF-vulnerability:-CVE-2013-4562), [here](https://github.com/mkdynamic/omniauth-facebook/wiki/Access-token-vulnerability:-CVE-2013-4593) and [here](http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2012-6134).**
3
-
4
- ---
5
-
6
- # OmniAuth Facebook &nbsp;[![Build Status](https://secure.travis-ci.org/mkdynamic/omniauth-facebook.svg?branch=master)](https://travis-ci.org/mkdynamic/omniauth-facebook) [![Gem Version](https://img.shields.io/gem/v/omniauth-facebook.svg)](https://rubygems.org/gems/omniauth-facebook)
1
+ # OmniAuth Facebook &nbsp;[![Build Status](https://secure.travis-ci.org/simi/omniauth-facebook.svg?branch=master)](https://travis-ci.org/simi/omniauth-facebook) [![Gem Version](https://img.shields.io/gem/v/omniauth-facebook.svg)](https://rubygems.org/gems/omniauth-facebook)
7
2
 
3
+ 📣 **NOTICE** We’re looking for maintainers to help keep this project up-to-date. If you are interested in helping please open an Issue expressing your interest. Thanks! 📣
8
4
 
9
5
  **These notes are based on master, please see tags for README pertaining to specific releases.**
10
6
 
11
7
  Facebook OAuth2 Strategy for OmniAuth.
12
8
 
13
- Supports the OAuth 2.0 server-side and client-side flows. Read the Facebook docs for more details: http://developers.facebook.com/docs/authentication
9
+ Supports OAuth 2.0 server-side and client-side flows. Read the Facebook docs for more details: http://developers.facebook.com/docs/authentication
14
10
 
15
11
  ## Installing
16
12
 
@@ -30,11 +26,11 @@ Here's a quick example, adding the middleware to a Rails app in `config/initiali
30
26
 
31
27
  ```ruby
32
28
  Rails.application.config.middleware.use OmniAuth::Builder do
33
- provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET']
29
+ provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET']
34
30
  end
35
31
  ```
36
32
 
37
- [See the example Sinatra app for full examples](https://github.com/mkdynamic/omniauth-facebook/blob/master/example/config.ru) of both the server and client-side flows (including using the Facebook Javascript SDK).
33
+ [See the example Sinatra app for full examples](https://github.com/simi/omniauth-facebook/blob/master/example/config.ru) of both the server and client-side flows (including using the Facebook Javascript SDK).
38
34
 
39
35
  ## Configuring
40
36
 
@@ -45,7 +41,7 @@ Option name | Default | Explanation
45
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/
46
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/
47
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.
48
- `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).
49
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/.
50
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`.
51
47
  `secure_image_url` | `false` | Set to `true` to use https for the avatar image url returned in the auth hash.
@@ -55,24 +51,25 @@ For example, to request `email`, `user_birthday` and `read_stream` permissions a
55
51
 
56
52
  ```ruby
57
53
  Rails.application.config.middleware.use OmniAuth::Builder do
58
- provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET'],
59
- :scope => 'email,user_birthday,read_stream', :display => 'popup'
54
+ provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'],
55
+ scope: 'email,user_birthday,read_stream', display: 'popup'
60
56
  end
61
57
  ```
62
58
 
63
59
  ### API Version
64
60
 
65
- OmniAuth Facebook uses unversioned API endpoints by default. You can configure custom endpoints via `client_options` hash passed to `provider`.
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):
66
62
 
67
63
  ```ruby
68
64
  use OmniAuth::Builder do
69
- provider :facebook, ENV['APP_ID'], ENV['APP_SECRET'],
70
- :client_options => {
71
- :site => 'https://graph.facebook.com/v2.0',
72
- :authorize_url => "https://www.facebook.com/v2.0/dialog/oauth"
65
+ provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET'],
66
+ client_options: {
67
+ site: 'https://graph.facebook.com/v7.0',
68
+ authorize_url: "https://www.facebook.com/v7.0/dialog/oauth"
73
69
  }
74
70
  end
75
71
  ```
72
+
76
73
  ### Per-Request Options
77
74
 
78
75
  If you want to set the `display` format, `auth_type`, or `scope` on a per-request basis, you can just pass it to the OmniAuth request phase URL, for example: `/auth/facebook?display=popup` or `/auth/facebook?scope=email`.
@@ -83,39 +80,37 @@ Here's an example *Auth Hash* available in `request.env['omniauth.auth']`:
83
80
 
84
81
  ```ruby
85
82
  {
86
- :provider => 'facebook',
87
- :uid => '1234567',
88
- :info => {
89
- :nickname => 'jbloggs',
90
- :email => 'joe@bloggs.com',
91
- :name => 'Joe Bloggs',
92
- :first_name => 'Joe',
93
- :last_name => 'Bloggs',
94
- :image => 'http://graph.facebook.com/1234567/picture?type=square',
95
- :urls => { :Facebook => 'http://www.facebook.com/jbloggs' },
96
- :location => 'Palo Alto, California',
97
- :verified => true
83
+ provider: 'facebook',
84
+ uid: '1234567',
85
+ info: {
86
+ email: 'joe@bloggs.com',
87
+ name: 'Joe Bloggs',
88
+ first_name: 'Joe',
89
+ last_name: 'Bloggs',
90
+ image: 'http://graph.facebook.com/1234567/picture?type=square',
91
+ verified: true
98
92
  },
99
- :credentials => {
100
- :token => 'ABCDEF...', # OAuth 2.0 access_token, which you may wish to store
101
- :expires_at => 1321747205, # when the access token expires (it always will)
102
- :expires => true # this will always be true
93
+ credentials: {
94
+ token: 'ABCDEF...', # OAuth 2.0 access_token, which you may wish to store
95
+ expires_at: 1321747205, # when the access token expires (it always will)
96
+ expires: true # this will always be true
103
97
  },
104
- :extra => {
105
- :raw_info => {
106
- :id => '1234567',
107
- :name => 'Joe Bloggs',
108
- :first_name => 'Joe',
109
- :last_name => 'Bloggs',
110
- :link => 'http://www.facebook.com/jbloggs',
111
- :username => 'jbloggs',
112
- :location => { :id => '123456789', :name => 'Palo Alto, California' },
113
- :gender => 'male',
114
- :email => 'joe@bloggs.com',
115
- :timezone => -8,
116
- :locale => 'en_US',
117
- :verified => true,
118
- :updated_time => '2011-11-11T06:21:03+0000'
98
+ extra: {
99
+ raw_info: {
100
+ id: '1234567',
101
+ name: 'Joe Bloggs',
102
+ first_name: 'Joe',
103
+ last_name: 'Bloggs',
104
+ link: 'http://www.facebook.com/jbloggs',
105
+ username: 'jbloggs',
106
+ location: { id: '123456789', name: 'Palo Alto, California' },
107
+ gender: 'male',
108
+ email: 'joe@bloggs.com',
109
+ timezone: -8,
110
+ locale: 'en_US',
111
+ verified: true,
112
+ updated_time: '2011-11-11T06:21:03+0000',
113
+ # ...
119
114
  }
120
115
  }
121
116
  }
@@ -157,15 +152,7 @@ If you use the server-side flow, Facebook will give you back a longer lived acce
157
152
 
158
153
  ## Supported Rubies
159
154
 
160
- Actively tested with the following Ruby versions:
161
-
162
- - MRI 2.1.0
163
- - MRI 2.0.0
164
- - MRI 1.9.3
165
- - MRI 1.9.2
166
- - MRI 1.8.7
167
- - JRuby 1.7.9
168
- - Rubinius (latest stable)
155
+ - Ruby MRI (2.3, 2.4, 2.5, 2.6)
169
156
 
170
157
  ## License
171
158
 
@@ -176,6 +163,3 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
176
163
  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
177
164
 
178
165
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
179
-
180
-
181
- [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/mkdynamic/omniauth-facebook/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
data/Rakefile CHANGED
@@ -6,4 +6,4 @@ Rake::TestTask.new do |task|
6
6
  task.test_files = FileList['test/*_test.rb']
7
7
  end
8
8
 
9
- task :default => :test
9
+ task default: :test
@@ -2,4 +2,4 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'sinatra'
4
4
  gem 'sinatra-reloader'
5
- gem 'omniauth-facebook', :path => '../'
5
+ gem 'omniauth-facebook', path: '../'
@@ -1,58 +1,62 @@
1
1
  PATH
2
- remote: ../
2
+ remote: ..
3
3
  specs:
4
- omniauth-facebook (2.0.0)
4
+ omniauth-facebook (6.0.0)
5
5
  omniauth-oauth2 (~> 1.2)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- backports (3.3.5)
11
- faraday (0.9.0)
10
+ backports (3.15.0)
11
+ faraday (1.0.0)
12
12
  multipart-post (>= 1.2, < 3)
13
- hashie (3.2.0)
14
- jwt (1.0.0)
15
- multi_json (1.8.2)
16
- multi_xml (0.5.5)
17
- multipart-post (2.0.0)
18
- oauth2 (1.0.0)
19
- faraday (>= 0.8, < 0.10)
20
- jwt (~> 1.0)
13
+ hashie (3.6.0)
14
+ jwt (2.2.1)
15
+ multi_json (1.14.1)
16
+ multi_xml (0.6.0)
17
+ multipart-post (2.1.1)
18
+ mustermann (1.1.1)
19
+ ruby2_keywords (~> 0.0.1)
20
+ oauth2 (1.4.2)
21
+ faraday (>= 0.8, < 2.0)
22
+ jwt (>= 1.0, < 3.0)
21
23
  multi_json (~> 1.3)
22
24
  multi_xml (~> 0.5)
23
- rack (~> 1.2)
24
- omniauth (1.2.2)
25
- hashie (>= 1.2, < 4)
26
- rack (~> 1.0)
27
- omniauth-oauth2 (1.2.0)
28
- faraday (>= 0.8, < 0.10)
29
- multi_json (~> 1.3)
30
- oauth2 (~> 1.0)
31
- omniauth (~> 1.2)
32
- rack (1.5.2)
33
- rack-protection (1.5.1)
25
+ rack (>= 1.2, < 3)
26
+ omniauth (1.9.0)
27
+ hashie (>= 3.4.6, < 3.7.0)
28
+ rack (>= 1.6.2, < 3)
29
+ omniauth-oauth2 (1.6.0)
30
+ oauth2 (~> 1.1)
31
+ omniauth (~> 1.9)
32
+ rack (2.1.1)
33
+ rack-protection (2.0.8.1)
34
34
  rack
35
- rack-test (0.6.2)
36
- rack (>= 1.0)
37
- sinatra (1.4.4)
38
- rack (~> 1.4)
39
- rack-protection (~> 1.4)
40
- tilt (~> 1.3, >= 1.3.4)
41
- sinatra-contrib (1.4.2)
42
- backports (>= 2.0)
35
+ ruby2_keywords (0.0.2)
36
+ sinatra (2.0.8.1)
37
+ mustermann (~> 1.0)
38
+ rack (~> 2.0)
39
+ rack-protection (= 2.0.8.1)
40
+ tilt (~> 2.0)
41
+ sinatra-contrib (2.0.8.1)
42
+ backports (>= 2.8.2)
43
43
  multi_json
44
- rack-protection
45
- rack-test
46
- sinatra (~> 1.4.0)
47
- tilt (~> 1.3)
44
+ mustermann (~> 1.0)
45
+ rack-protection (= 2.0.8.1)
46
+ sinatra (= 2.0.8.1)
47
+ tilt (~> 2.0)
48
48
  sinatra-reloader (1.0)
49
49
  sinatra-contrib
50
- tilt (1.4.1)
50
+ tilt (2.0.10)
51
51
 
52
52
  PLATFORMS
53
53
  ruby
54
+ x64-mingw32
54
55
 
55
56
  DEPENDENCIES
56
57
  omniauth-facebook!
57
58
  sinatra
58
59
  sinatra-reloader
60
+
61
+ BUNDLED WITH
62
+ 1.17.2
@@ -1,93 +1,86 @@
1
1
  require 'sinatra'
2
2
  require "sinatra/reloader"
3
3
  require 'yaml'
4
+ require 'json'
4
5
 
5
6
  # configure sinatra
6
7
  set :run, false
7
8
  set :raise_errors, true
8
9
 
9
- # setup logging to file
10
- log = File.new("app.log", "a+")
11
- $stdout.reopen(log)
12
- $stderr.reopen(log)
13
- $stderr.sync = true
14
- $stdout.sync = true
15
-
16
- # server-side flow
10
+ # REQUEST STEP (server-side flow)
17
11
  get '/server-side' do
18
- # NOTE: You would just hit this endpoint directly from the browser in a real app. The redirect is just here to
19
- # explicit declare this server-side flow.
12
+ # NOTE: You would just hit this endpoint directly from the browser in a real app. The redirect is
13
+ # just here to explicit declare this server-side flow.
20
14
  redirect '/auth/facebook'
21
15
  end
22
16
 
23
- # client-side flow
17
+ # REQUEST STEP (client-side flow)
24
18
  get '/client-side' do
25
19
  content_type 'text/html'
26
- # NOTE: When you enable cookie below in the FB.init call the GET request in the FB.login callback will send a signed
27
- # request in a cookie back the OmniAuth callback which will parse out the authorization code and obtain an
28
- # access_token with it.
29
- <<-END
20
+ # NOTE: When you enable cookie below in the FB.init call the GET request in the FB.login callback
21
+ # will send a signed request in a cookie back the OmniAuth callback which will parse out the
22
+ # authorization code and obtain an access_token with it.
23
+ <<-HTML
30
24
  <html>
31
25
  <head>
32
26
  <title>Client-side Flow Example</title>
33
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" type="text/javascript"></script>
34
- </head>
35
- <body>
36
- <div id="fb-root"></div>
37
-
27
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js" type="text/javascript"></script>
38
28
  <script type="text/javascript">
39
29
  window.fbAsyncInit = function() {
40
30
  FB.init({
41
- appId : '#{ENV['APP_ID']}',
42
- status : true, // check login status
43
- cookie : true, // enable cookies to allow the server to access the session
44
- xfbml : true // parse XFBML
31
+ appId: '#{ENV['FACEBOOK_APP_ID']}',
32
+ version: 'v4.0',
33
+ cookie: true // IMPORTANT must enable cookies to allow the server to access the session
45
34
  });
35
+ console.log("fb init");
46
36
  };
47
37
 
48
- (function(d) {
49
- var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
50
- js = d.createElement('script'); js.id = id; js.async = true;
51
- js.src = "//connect.facebook.net/en_US/all.js";
52
- d.getElementsByTagName('head')[0].appendChild(js);
53
- }(document));
54
-
55
- $(function() {
56
- $('a').click(function(e) {
57
- e.preventDefault();
58
-
59
- FB.login(function(response) {
60
- if (response.authResponse) {
61
- $('#connect').html('Connected! Hitting OmniAuth callback (GET /auth/facebook/callback)...');
62
-
63
- // since we have cookies enabled, this request will allow omniauth to parse
64
- // out the auth code from the signed request in the fbsr_XXX cookie
65
- $.getJSON('/auth/facebook/callback', function(json) {
66
- $('#connect').html('Connected! Callback complete.');
67
- $('#results').html(JSON.stringify(json));
68
- });
69
- }
70
- }, { scope: 'email,read_stream', state: 'abc123' });
71
- });
72
- });
38
+ (function(d, s, id){
39
+ var js, fjs = d.getElementsByTagName(s)[0];
40
+ if (d.getElementById(id)) {return;}
41
+ js = d.createElement(s); js.id = id;
42
+ js.src = "//connect.facebook.net/en_US/sdk.js";
43
+ fjs.parentNode.insertBefore(js, fjs);
44
+ }(document, 'script', 'facebook-jssdk'));
73
45
  </script>
46
+ </head>
47
+ <body>
48
+ <div id="fb-root"></div>
74
49
 
75
50
  <p id="connect">
76
51
  <a href="#">Connect to FB!</a>
77
52
  </p>
78
53
 
79
54
  <p id="results" />
55
+
56
+ <script type="text/javascript">
57
+ $('a').click(function(e) {
58
+ e.preventDefault();
59
+
60
+ FB.login(function(response) {
61
+ console.log(response);
62
+ if (response.authResponse) {
63
+ $('#connect').html('Connected! Hitting OmniAuth callback (GET /auth/facebook/callback)...');
64
+
65
+ // since we have cookies enabled, this request will allow omniauth to parse
66
+ // out the auth code from the signed request in the fbsr_XXX cookie
67
+ $.getJSON('/auth/facebook/callback', function(json) {
68
+ $('#connect').html('Connected! Callback complete.');
69
+ $('#results').html(JSON.stringify(json));
70
+ });
71
+ }
72
+ }); // if you want custom scopes, pass them as an extra, final argument to FB.login
73
+ });
74
+ </script>
80
75
  </body>
81
76
  </html>
82
- END
77
+ HTML
83
78
  end
84
79
 
80
+ # CALLBACK STEP
81
+ # - redirected here for server-side flow
82
+ # - ajax request made here for client-side flow
85
83
  get '/auth/:provider/callback' do
86
84
  content_type 'application/json'
87
- MultiJson.encode(request.env)
88
- end
89
-
90
- get '/auth/failure' do
91
- content_type 'application/json'
92
- MultiJson.encode(request.env)
85
+ JSON.dump(request.env)
93
86
  end
@@ -2,10 +2,10 @@ require 'bundler/setup'
2
2
  require 'omniauth-facebook'
3
3
  require './app.rb'
4
4
 
5
- use Rack::Session::Cookie, :secret => 'abc123'
5
+ use Rack::Session::Cookie, secret: 'abc123'
6
6
 
7
7
  use OmniAuth::Builder do
8
- provider :facebook, ENV['APP_ID'], ENV['APP_SECRET'], :scope => 'email,read_stream'
8
+ provider :facebook, ENV['FACEBOOK_APP_ID'], ENV['FACEBOOK_APP_SECRET']
9
9
  end
10
10
 
11
11
  run Sinatra::Application
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module Facebook
3
- VERSION = "3.0.0"
3
+ VERSION = '7.0.0'
4
4
  end
5
5
  end
@@ -12,20 +12,18 @@ module OmniAuth
12
12
  DEFAULT_SCOPE = 'email'
13
13
 
14
14
  option :client_options, {
15
- :site => 'https://graph.facebook.com',
16
- :authorize_url => "https://www.facebook.com/dialog/oauth",
17
- :token_url => 'oauth/access_token'
18
- }
19
-
20
- option :token_params, {
21
- :parse => :query
15
+ site: 'https://graph.facebook.com/v4.0',
16
+ authorize_url: "https://www.facebook.com/v4.0/dialog/oauth",
17
+ token_url: 'oauth/access_token'
22
18
  }
23
19
 
24
20
  option :access_token_options, {
25
- :header_format => 'OAuth %s',
26
- :param_name => 'access_token'
21
+ header_format: 'OAuth %s',
22
+ param_name: 'access_token'
27
23
  }
28
24
 
25
+ option :authorization_code_from_signed_request_in_cookie, nil
26
+
29
27
  option :authorize_options, [:scope, :display, :auth_type]
30
28
 
31
29
  uid { raw_info['id'] }
@@ -59,11 +57,11 @@ module OmniAuth
59
57
  end
60
58
 
61
59
  def info_options
62
- params = {:appsecret_proof => appsecret_proof}
63
- params.merge!({:fields => (options[:info_fields] || 'name,email')})
64
- params.merge!({:locale => options[:locale]}) if options[:locale]
60
+ params = {appsecret_proof: appsecret_proof}
61
+ params.merge!({fields: (options[:info_fields] || 'name,email')})
62
+ params.merge!({locale: options[:locale]}) if options[:locale]
65
63
 
66
- { :params => params }
64
+ { params: params }
67
65
  end
68
66
 
69
67
  def callback_phase
@@ -80,7 +78,7 @@ module OmniAuth
80
78
  # phase and it must match during the access_token phase:
81
79
  # https://github.com/facebook/facebook-php-sdk/blob/master/src/base_facebook.php#L477
82
80
  def callback_url
83
- if @authorization_code_from_signed_request_in_cookie
81
+ if options.authorization_code_from_signed_request_in_cookie
84
82
  ''
85
83
  else
86
84
  # Fixes regression in omniauth-oauth2 v1.4.0 by https://github.com/intridea/omniauth-oauth2/commit/85fdbe117c2a4400d001a6368cc359d88f40abc7
@@ -135,7 +133,7 @@ module OmniAuth
135
133
  yield
136
134
  elsif code_from_signed_request = signed_request_from_cookie && signed_request_from_cookie['code']
137
135
  request.params['code'] = code_from_signed_request
138
- @authorization_code_from_signed_request_in_cookie = true
136
+ options.authorization_code_from_signed_request_in_cookie = true
139
137
  # NOTE The code from the signed fbsr_XXX cookie is set by the FB JS SDK will confirm that the identity of the
140
138
  # user contained in the signed request matches the user loading the app.
141
139
  original_provider_ignores_state = options.provider_ignores_state
@@ -144,7 +142,7 @@ module OmniAuth
144
142
  yield
145
143
  ensure
146
144
  request.params.delete('code')
147
- @authorization_code_from_signed_request_in_cookie = false
145
+ options.authorization_code_from_signed_request_in_cookie = false
148
146
  options.provider_ignores_state = original_provider_ignores_state
149
147
  end
150
148
  else
@@ -162,10 +160,10 @@ module OmniAuth
162
160
  def image_url(uid, options)
163
161
  uri_class = options[:secure_image_url] ? URI::HTTPS : URI::HTTP
164
162
  site_uri = URI.parse(client.site)
165
- url = uri_class.build({:host => site_uri.host, :path => "#{site_uri.path}/#{uid}/picture"})
163
+ url = uri_class.build({host: site_uri.host, path: "#{site_uri.path}/#{uid}/picture"})
166
164
 
167
165
  query = if options[:image_size].is_a?(String) || options[:image_size].is_a?(Symbol)
168
- { :type => options[:image_size] }
166
+ { type: options[:image_size] }
169
167
  elsif options[:image_size].is_a?(Hash)
170
168
  options[:image_size]
171
169
  end
@@ -41,6 +41,7 @@ class StrategyTestCase < TestCase
41
41
 
42
42
  @client_id = '123'
43
43
  @client_secret = '53cr3tz'
44
+ @options = {}
44
45
  end
45
46
 
46
47
  def strategy
@@ -53,4 +54,4 @@ class StrategyTestCase < TestCase
53
54
  end
54
55
  end
55
56
 
56
- Dir[File.expand_path('../support/**/*', __FILE__)].each &method(:require)
57
+ Dir[File.expand_path('../support/**/*', __FILE__)].each(&method(:require))
@@ -9,15 +9,15 @@ end
9
9
 
10
10
  class ClientTest < StrategyTestCase
11
11
  test 'has correct Facebook site' do
12
- assert_equal 'https://graph.facebook.com', 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/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
20
- @options = {:client_options => {:site => 'https://graph.facebook.net/v2.2'}}
20
+ @options = {client_options: {site: 'https://graph.facebook.net/v2.2'}}
21
21
  assert_equal 'oauth/access_token', strategy.client.options[:token_url]
22
22
  assert_equal 'https://graph.facebook.net/v2.2/oauth/access_token', strategy.client.token_url
23
23
  end
@@ -33,7 +33,7 @@ class CallbackUrlTest < StrategyTestCase
33
33
  end
34
34
 
35
35
  test "returns path from callback_path option (omitting querystring)" do
36
- @options = { :callback_path => "/auth/FB/done"}
36
+ @options = { callback_path: "/auth/FB/done"}
37
37
  url_base = 'http://auth.request.com'
38
38
  @request.stubs(:url).returns("#{url_base}/page/path")
39
39
  strategy.stubs(:script_name).returns('') # as not to depend on Rack env
@@ -43,7 +43,7 @@ class CallbackUrlTest < StrategyTestCase
43
43
 
44
44
  test "returns url from callback_url option" do
45
45
  url = 'https://auth.myapp.com/auth/fb/callback'
46
- @options = { :callback_url => url }
46
+ @options = { callback_url: url }
47
47
  assert_equal url, strategy.callback_url
48
48
  end
49
49
  end
@@ -73,12 +73,6 @@ class AuthorizeParamsTest < StrategyTestCase
73
73
  end
74
74
  end
75
75
 
76
- class TokeParamsTest < StrategyTestCase
77
- test 'has correct parse strategy' do
78
- assert_equal :query, strategy.token_params[:parse]
79
- end
80
- end
81
-
82
76
  class AccessTokenOptionsTest < StrategyTestCase
83
77
  test 'has correct param name by default' do
84
78
  assert_equal 'access_token', strategy.access_token_options[:param_name]
@@ -102,40 +96,40 @@ end
102
96
 
103
97
  class InfoTest < StrategyTestCase
104
98
  test 'returns the secure facebook avatar url when `secure_image_url` option is specified' do
105
- @options = { :secure_image_url => true }
99
+ @options = { secure_image_url: true }
106
100
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
107
101
  strategy.stubs(:raw_info).returns(raw_info)
108
- assert_equal 'https://graph.facebook.com/321/picture', strategy.info['image']
102
+ assert_equal 'https://graph.facebook.com/v4.0/321/picture', strategy.info['image']
109
103
  end
110
104
 
111
105
  test 'returns the image_url based of the client site' do
112
- @options = { :secure_image_url => true, :client_options => {:site => "https://blah.facebook.com/v2.2"}}
106
+ @options = { secure_image_url: true, client_options: {site: "https://blah.facebook.com/v2.2"}}
113
107
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
114
108
  strategy.stubs(:raw_info).returns(raw_info)
115
109
  assert_equal 'https://blah.facebook.com/v2.2/321/picture', strategy.info['image']
116
110
  end
117
111
 
118
112
  test 'returns the image with size specified in the `image_size` option' do
119
- @options = { :image_size => 'normal' }
113
+ @options = { image_size: 'normal' }
120
114
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
121
115
  strategy.stubs(:raw_info).returns(raw_info)
122
- assert_equal 'http://graph.facebook.com/321/picture?type=normal', strategy.info['image']
116
+ assert_equal 'http://graph.facebook.com/v4.0/321/picture?type=normal', strategy.info['image']
123
117
  end
124
118
 
125
119
  test 'returns the image with size specified as a symbol in the `image_size` option' do
126
- @options = { :image_size => :normal }
120
+ @options = { image_size: :normal }
127
121
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
128
122
  strategy.stubs(:raw_info).returns(raw_info)
129
- assert_equal 'http://graph.facebook.com/321/picture?type=normal', strategy.info['image']
123
+ assert_equal 'http://graph.facebook.com/v4.0/321/picture?type=normal', strategy.info['image']
130
124
  end
131
125
 
132
126
  test 'returns the image with width and height specified in the `image_size` option' do
133
- @options = { :image_size => { :width => 123, :height => 987 } }
127
+ @options = { image_size: { width: 123, height: 987 } }
134
128
  raw_info = { 'name' => 'Fred Smith', 'id' => '321' }
135
129
  strategy.stubs(:raw_info).returns(raw_info)
136
130
  assert_match 'width=123', strategy.info['image']
137
131
  assert_match 'height=987', strategy.info['image']
138
- assert_match 'http://graph.facebook.com/321/picture?', strategy.info['image']
132
+ assert_match 'http://graph.facebook.com/v4.0/321/picture?', strategy.info['image']
139
133
  end
140
134
  end
141
135
 
@@ -182,7 +176,7 @@ class InfoTestOptionalDataPresent < StrategyTestCase
182
176
 
183
177
  test 'returns the facebook avatar url' do
184
178
  @raw_info['id'] = '321'
185
- assert_equal 'http://graph.facebook.com/321/picture', strategy.info['image']
179
+ assert_equal 'http://graph.facebook.com/v4.0/321/picture', strategy.info['image']
186
180
  end
187
181
 
188
182
  test 'returns the Facebook link as the Facebook url' do
@@ -261,39 +255,39 @@ class RawInfoTest < StrategyTestCase
261
255
  super
262
256
  @access_token = stub('OAuth2::AccessToken')
263
257
  @appsecret_proof = 'appsecret_proof'
264
- @options = {:appsecret_proof => @appsecret_proof, :fields => 'name,email'}
258
+ @options = {appsecret_proof: @appsecret_proof, fields: 'name,email'}
265
259
  end
266
260
 
267
- test 'performs a GET to https://graph.facebook.com/me' do
261
+ test 'performs a GET to https://graph.facebook.com/v4.0/me' do
268
262
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
269
263
  strategy.stubs(:access_token).returns(@access_token)
270
- params = {:params => @options}
264
+ params = {params: @options}
271
265
  @access_token.expects(:get).with('me', params).returns(stub_everything('OAuth2::Response'))
272
266
  strategy.raw_info
273
267
  end
274
268
 
275
- test 'performs a GET to https://graph.facebook.com/me with locale' do
276
- @options.merge!({ :locale => 'cs_CZ' })
269
+ test 'performs a GET to https://graph.facebook.com/v4.0/me with locale' do
270
+ @options.merge!({ locale: 'cs_CZ' })
277
271
  strategy.stubs(:access_token).returns(@access_token)
278
272
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
279
- params = {:params => @options}
273
+ params = {params: @options}
280
274
  @access_token.expects(:get).with('me', params).returns(stub_everything('OAuth2::Response'))
281
275
  strategy.raw_info
282
276
  end
283
277
 
284
- test 'performs a GET to https://graph.facebook.com/me with info_fields' do
285
- @options.merge!({:info_fields => 'about'})
278
+ test 'performs a GET to https://graph.facebook.com/v4.0/me with info_fields' do
279
+ @options.merge!({info_fields: 'about'})
286
280
  strategy.stubs(:access_token).returns(@access_token)
287
281
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
288
- params = {:params => {:appsecret_proof => @appsecret_proof, :fields => 'about'}}
282
+ params = {params: {appsecret_proof: @appsecret_proof, fields: 'about'}}
289
283
  @access_token.expects(:get).with('me', params).returns(stub_everything('OAuth2::Response'))
290
284
  strategy.raw_info
291
285
  end
292
286
 
293
- test 'performs a GET to https://graph.facebook.com/me with default info_fields' do
287
+ test 'performs a GET to https://graph.facebook.com/v4.0/me with default info_fields' do
294
288
  strategy.stubs(:access_token).returns(@access_token)
295
289
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
296
- params = {:params => {:appsecret_proof => @appsecret_proof, :fields => 'name,email'}}
290
+ params = {params: {appsecret_proof: @appsecret_proof, fields: 'name,email'}}
297
291
  @access_token.expects(:get).with('me', params).returns(stub_everything('OAuth2::Response'))
298
292
  strategy.raw_info
299
293
  end
@@ -306,7 +300,7 @@ class RawInfoTest < StrategyTestCase
306
300
  raw_response.stubs(:status).returns(200)
307
301
  raw_response.stubs(:headers).returns({'Content-Type' => 'application/json' })
308
302
  oauth2_response = OAuth2::Response.new(raw_response)
309
- params = {:params => @options}
303
+ params = {params: @options}
310
304
  @access_token.stubs(:get).with('me', params).returns(oauth2_response)
311
305
  assert_kind_of Hash, strategy.raw_info
312
306
  assert_equal 'thar', strategy.raw_info['ohai']
@@ -315,16 +309,16 @@ class RawInfoTest < StrategyTestCase
315
309
  test 'returns an empty hash when the response is false' do
316
310
  strategy.stubs(:access_token).returns(@access_token)
317
311
  strategy.stubs(:appsecret_proof).returns(@appsecret_proof)
318
- oauth2_response = stub('OAuth2::Response', :parsed => false)
319
- params = {:params => @options}
312
+ oauth2_response = stub('OAuth2::Response', parsed: false)
313
+ params = {params: @options}
320
314
  @access_token.stubs(:get).with('me', params).returns(oauth2_response)
321
315
  assert_kind_of Hash, strategy.raw_info
322
316
  assert_equal({}, strategy.raw_info)
323
317
  end
324
318
 
325
319
  test 'should not include raw_info in extras hash when skip_info is specified' do
326
- @options = { :skip_info => true }
327
- strategy.stubs(:raw_info).returns({:foo => 'bar' })
320
+ @options = { skip_info: true }
321
+ strategy.stubs(:raw_info).returns({foo: 'bar' })
328
322
  refute_has_key 'raw_info', strategy.extra
329
323
  end
330
324
  end
@@ -458,7 +452,7 @@ module SignedRequestTests
458
452
  end
459
453
 
460
454
  test 'empty param' do
461
- assert_equal nil, strategy.send(:signed_request_from_cookie)
455
+ assert_nil strategy.send(:signed_request_from_cookie)
462
456
  end
463
457
  end
464
458
 
@@ -13,7 +13,7 @@ module OAuth2StrategyTests
13
13
  extend BlockTestHelper
14
14
 
15
15
  test 'should be initialized with symbolized client_options' do
16
- @options = { :client_options => { 'authorize_url' => 'https://example.com' } }
16
+ @options = { client_options: { 'authorize_url' => 'https://example.com' } }
17
17
  assert_equal 'https://example.com', strategy.client.options[:authorize_url]
18
18
  end
19
19
  end
@@ -22,19 +22,19 @@ module OAuth2StrategyTests
22
22
  extend BlockTestHelper
23
23
 
24
24
  test 'should include any authorize params passed in the :authorize_params option' do
25
- @options = { :authorize_params => { :foo => 'bar', :baz => 'zip' } }
25
+ @options = { authorize_params: { foo: 'bar', baz: 'zip' } }
26
26
  assert_equal 'bar', strategy.authorize_params['foo']
27
27
  assert_equal 'zip', strategy.authorize_params['baz']
28
28
  end
29
29
 
30
30
  test 'should include top-level options that are marked as :authorize_options' do
31
- @options = { :authorize_options => [:scope, :foo], :scope => 'bar', :foo => 'baz' }
31
+ @options = { authorize_options: [:scope, :foo], scope: 'bar', foo: 'baz' }
32
32
  assert_equal 'bar', strategy.authorize_params['scope']
33
33
  assert_equal 'baz', strategy.authorize_params['foo']
34
34
  end
35
35
 
36
36
  test 'should exclude top-level options that are not passed' do
37
- @options = { :authorize_options => [:bar] }
37
+ @options = { authorize_options: [:bar] }
38
38
  refute_has_key :bar, strategy.authorize_params
39
39
  refute_has_key 'bar', strategy.authorize_params
40
40
  end
@@ -51,7 +51,7 @@ module OAuth2StrategyTests
51
51
  end
52
52
 
53
53
  test 'should not store state in the session when present in authorize params vs. a random one' do
54
- @options = { :authorize_params => { :state => 'bar' } }
54
+ @options = { authorize_params: { state: 'bar' } }
55
55
  refute_empty strategy.authorize_params['state']
56
56
  refute_equal 'bar', strategy.authorize_params[:state]
57
57
  refute_empty strategy.session['omniauth.state']
@@ -71,13 +71,13 @@ module OAuth2StrategyTests
71
71
  extend BlockTestHelper
72
72
 
73
73
  test 'should include any authorize params passed in the :token_params option' do
74
- @options = { :token_params => { :foo => 'bar', :baz => 'zip' } }
74
+ @options = { token_params: { foo: 'bar', baz: 'zip' } }
75
75
  assert_equal 'bar', strategy.token_params['foo']
76
76
  assert_equal 'zip', strategy.token_params['baz']
77
77
  end
78
78
 
79
79
  test 'should include top-level options that are marked as :token_options' do
80
- @options = { :token_options => [:scope, :foo], :scope => 'bar', :foo => 'baz' }
80
+ @options = { token_options: [:scope, :foo], scope: 'bar', foo: 'baz' }
81
81
  assert_equal 'bar', strategy.token_params['scope']
82
82
  assert_equal 'baz', strategy.token_params['foo']
83
83
  end
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: 3.0.0
4
+ version: 7.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Dodwell
@@ -9,62 +9,62 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-10-27 00:00:00.000000000 Z
12
+ date: 2020-08-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: omniauth-oauth2
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '1.2'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.2'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: minitest
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: mocha
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  description:
@@ -75,8 +75,9 @@ executables: []
75
75
  extensions: []
76
76
  extra_rdoc_files: []
77
77
  files:
78
- - .gitignore
79
- - .travis.yml
78
+ - ".github/workflows/stale.yml"
79
+ - ".gitignore"
80
+ - ".travis.yml"
80
81
  - CHANGELOG.md
81
82
  - Gemfile
82
83
  - README.md
@@ -107,17 +108,16 @@ require_paths:
107
108
  - lib
108
109
  required_ruby_version: !ruby/object:Gem::Requirement
109
110
  requirements:
110
- - - '>='
111
+ - - ">="
111
112
  - !ruby/object:Gem::Version
112
113
  version: '0'
113
114
  required_rubygems_version: !ruby/object:Gem::Requirement
114
115
  requirements:
115
- - - '>='
116
+ - - ">="
116
117
  - !ruby/object:Gem::Version
117
118
  version: '0'
118
119
  requirements: []
119
- rubyforge_project:
120
- rubygems_version: 2.0.14
120
+ rubygems_version: 3.2.0.pre1
121
121
  signing_key:
122
122
  specification_version: 4
123
123
  summary: Facebook OAuth2 Strategy for OmniAuth