omniauth-google-oauth2 1.1.1 → 1.1.3

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: '0532842d8362fc36a8797376dc54e09b1d11fa178d462114225eecbe87274785'
4
- data.tar.gz: 63b1d0a5a3a6249b77b58cbfa4e696ae18748b59280cb73f36cb98f88abd98c1
3
+ metadata.gz: 7eb54f22683d8785746e4da71576b5f84cf2f654961879dc10c2585b61ac27e6
4
+ data.tar.gz: 32dd7cb7faaece80dd26f9675f2cd46fc20d39531a2230d24709296fa53cf1bc
5
5
  SHA512:
6
- metadata.gz: 6d6f34a8629057f1f89d613155567d0bb50917648794e64527976ba7ca4c372ed8806fd57bbe5cec55d2d60545ef2e9bd038da80e1101b96642018f1d8226951
7
- data.tar.gz: b00da9be3e3f97af0cdfe9a15be3d99126176a26bc21337febb893be88949da0573b4f6a843fbedac3dc982a4fda29ca532b63d3a1272fc8544468b3a42d32aa
6
+ metadata.gz: aebca15a4956422c94af941328c51007a4bf0d461fe109586ae90b4dddcfdc0acd8cc7a6abade1589986866040962be3457ab3ab4c27ebfbe3a390d15e1f0a38
7
+ data.tar.gz: 8d2a97f39e08ee8f8ccb00e6b9d7bdb6d9d96d26097ad36ca7486ba9f41a2671fa77c3b19628c83aa475a939c01331539df468d1280bc990927fc0e5475a3fe7
@@ -7,7 +7,7 @@ jobs:
7
7
  runs-on: ubuntu-latest
8
8
  strategy:
9
9
  matrix:
10
- ruby-version: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1']
10
+ ruby-version: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', truffleruby-head]
11
11
 
12
12
  steps:
13
13
  - uses: actions/checkout@v2
data/.rubocop.yml CHANGED
@@ -6,7 +6,7 @@ Metrics/BlockLength:
6
6
  ExcludedMethods: ['describe', 'context', 'shared_examples']
7
7
  Metrics/CyclomaticComplexity:
8
8
  Enabled: false
9
- Metrics/LineLength:
9
+ Layout/LineLength:
10
10
  Enabled: false
11
11
  Metrics/MethodLength:
12
12
  Enabled: false
@@ -18,3 +18,13 @@ Style/MutableConstant:
18
18
  Enabled: false
19
19
  Gemspec/RequiredRubyVersion:
20
20
  Enabled: false
21
+ Lint/RaiseException:
22
+ Enabled: false
23
+ Lint/StructNewOverride:
24
+ Enabled: false
25
+ Style/HashEachMethods:
26
+ Enabled: false
27
+ Style/HashTransformKeys:
28
+ Enabled: false
29
+ Style/HashTransformValues:
30
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,6 +1,35 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file.
3
3
 
4
+ ## 1.1.3 - 2024-08-29
5
+
6
+ ### Added
7
+ - Updated to use POST instead of GET for tokeninfo endpoint.
8
+
9
+ ### Deprecated
10
+ - Nothing.
11
+
12
+ ### Removed
13
+ - Nothing.
14
+
15
+ ### Fixed
16
+ - Documentation typos.
17
+ - Rubocop configuration updates.
18
+
19
+ ## 1.1.2 - 2024-03-28
20
+
21
+ ### Added
22
+ - Add support for enable_granular_consent option (#455)
23
+
24
+ ### Deprecated
25
+ - Nothing.
26
+
27
+ ### Removed
28
+ - Nothing.
29
+
30
+ ### Fixed
31
+ - Nothing.
32
+
4
33
  ## 1.1.1 - 2022-09-05
5
34
 
6
35
  ### Added
data/README.md CHANGED
@@ -40,6 +40,8 @@ You can now access the OmniAuth Google OAuth2 URL: `/auth/google_oauth2`
40
40
 
41
41
  For more examples please check out `examples/omni_auth.rb`
42
42
 
43
+ [Using Devise? Skip the above and jump down to the Devise section!](#devise) After setting up the provider via Devise, you can reference the configurations below.
44
+
43
45
  NOTE: While developing your application, if you change the scope in the initializer you will need to restart your app server. Remember that either the 'email' or 'profile' scope is required!
44
46
 
45
47
  ## Configuration
@@ -81,6 +83,8 @@ You can configure several options, which you pass in to the `provider` method vi
81
83
 
82
84
  * `include_granted_scopes`: If this is provided with the value true, and the authorization request is granted, the authorization will include any previous authorizations granted to this user/application combination for other scopes. See Google's [Incremental Authorization](https://developers.google.com/accounts/docs/OAuth2WebServer#incrementalAuth) for additional details.
83
85
 
86
+ * `enable_granular_consent`: If this is provided with the value true, users can choose to only grant access to specific data. See Google's [How to handle granular permissions](https://developers.google.com/identity/protocols/oauth2/resources/granular-permissions) guide for additional details.
87
+
84
88
  * `openid_realm`: Set the OpenID realm value, to allow upgrading from OpenID based authentication to OAuth 2 based authentication. When this is set correctly an `openid_id` value will be set in `['extra']['id_info']` in the authentication hash with the value of the user's OpenID ID URL.
85
89
 
86
90
  * `provider_ignores_state`: You will need to set this to `true` when using the `One-time Code Flow` below. In this flow there is no server side redirect that would set the state.
@@ -201,6 +205,8 @@ end
201
205
  and bind to or create the user
202
206
 
203
207
  ```ruby
208
+ # app/models/user.rb
209
+
204
210
  def self.from_omniauth(access_token)
205
211
  data = access_token.info
206
212
  user = User.where(email: data['email']).first
@@ -229,7 +235,7 @@ For your views you can login using:
229
235
  <%= link_to "Sign in with Google", user_omniauth_authorize_path(:google_oauth2) %>
230
236
  ```
231
237
 
232
- An overview is available at https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview
238
+ An overview is available at https://github.com/heartcombo/devise/wiki/OmniAuth:-Overview
233
239
 
234
240
  ### One-time Code Flow (Hybrid Authentication)
235
241
 
data/examples/Gemfile CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  source 'https://rubygems.org'
4
4
 
5
- gem 'omniauth-google-oauth2', '~> 1.1.1'
5
+ gem 'omniauth-google-oauth2', '~> 1.1.3'
6
6
  gem 'rubocop'
7
7
  gem 'sinatra', '~> 1.4'
8
8
  gem 'webrick'
@@ -8,11 +8,11 @@ Rails.application.config.middleware.use OmniAuth::Builder do
8
8
  # Default usage, this will give you offline access and a refresh token
9
9
  # using default scopes 'email' and 'profile'
10
10
  #
11
- provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'], scope: 'email,profile'
11
+ provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'], scope: 'email, profile'
12
12
 
13
13
  # Custom redirect_uri
14
14
  #
15
- # provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'], scope: 'email,profile', redirect_uri: 'https://localhost:3000/redirect'
15
+ # provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'], scope: 'email, profile', redirect_uri: 'https://localhost:3000/redirect'
16
16
 
17
17
  # Manual setup for offline access with a refresh token.
18
18
  #
@@ -21,7 +21,7 @@ Rails.application.config.middleware.use OmniAuth::Builder do
21
21
  # Custom scope supporting youtube. If you are customizing scopes, remember
22
22
  # to include the default scopes 'email' and 'profile'
23
23
  #
24
- # provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'], scope: 'http://gdata.youtube.com,email,profile,plus.me'
24
+ # provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'], scope: 'http://gdata.youtube.com, email, profile, plus.me'
25
25
 
26
26
  # Custom scope for users only using Google for account creation/auth and do not require a refresh token.
27
27
  #
@@ -29,7 +29,7 @@ Rails.application.config.middleware.use OmniAuth::Builder do
29
29
 
30
30
  # To include information about people in your circles you must include the 'plus.login' scope.
31
31
  #
32
- # provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'], skip_friends: false, scope: 'email,profile,plus.login'
32
+ # provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET'], skip_friends: false, scope: 'email, profile, plus.login'
33
33
 
34
34
  # If you need to acquire whether user picture is a default one or uploaded by user.
35
35
  #
@@ -2,6 +2,6 @@
2
2
 
3
3
  module OmniAuth
4
4
  module GoogleOauth2
5
- VERSION = '1.1.1'
5
+ VERSION = '1.1.3'
6
6
  end
7
7
  end
@@ -15,7 +15,7 @@ module OmniAuth
15
15
  DEFAULT_SCOPE = 'email,profile'
16
16
  USER_INFO_URL = 'https://www.googleapis.com/oauth2/v3/userinfo'
17
17
  IMAGE_SIZE_REGEXP = /(s\d+(-c)?)|(w\d+-h\d+(-c)?)|(w\d+(-c)?)|(h\d+(-c)?)|c/
18
- AUTHORIZE_OPTIONS = %i[access_type hd login_hint prompt request_visible_actions scope state redirect_uri include_granted_scopes openid_realm device_id device_name]
18
+ AUTHORIZE_OPTIONS = %i[access_type hd login_hint prompt request_visible_actions scope state redirect_uri include_granted_scopes enable_granular_consent openid_realm device_id device_name]
19
19
 
20
20
  option :name, 'google_oauth2'
21
21
  option :skip_friends, true
@@ -231,7 +231,7 @@ module OmniAuth
231
231
  return nil unless access_token
232
232
 
233
233
  @token_info ||= Hash.new do |h, k|
234
- h[k] = client.request(:get, 'https://www.googleapis.com/oauth2/v3/tokeninfo', params: { access_token: access_token }).parsed
234
+ h[k] = client.request(:post, 'https://www.googleapis.com/oauth2/v3/tokeninfo', body: { access_token: access_token }).parsed
235
235
  end
236
236
 
237
237
  @token_info[access_token]
@@ -21,9 +21,9 @@ Gem::Specification.new do |gem|
21
21
  gem.required_ruby_version = '>= 2.2'
22
22
 
23
23
  gem.add_runtime_dependency 'jwt', '>= 2.0'
24
- gem.add_runtime_dependency 'oauth2', '~> 2.0.6'
24
+ gem.add_runtime_dependency 'oauth2', '~> 2.0'
25
25
  gem.add_runtime_dependency 'omniauth', '~> 2.0'
26
- gem.add_runtime_dependency 'omniauth-oauth2', '~> 1.8.0'
26
+ gem.add_runtime_dependency 'omniauth-oauth2', '~> 1.8'
27
27
 
28
28
  gem.add_development_dependency 'rake', '~> 12.0'
29
29
  gem.add_development_dependency 'rspec', '~> 3.6'
@@ -176,6 +176,17 @@ describe OmniAuth::Strategies::GoogleOauth2 do
176
176
  end
177
177
  end
178
178
 
179
+ describe 'enable_granular_consent' do
180
+ it 'should default to nil' do
181
+ expect(subject.authorize_params['enable_granular_consent']).to eq(nil)
182
+ end
183
+
184
+ it 'should set the enable_granular_consent parameter if present' do
185
+ @options = { enable_granular_consent: 'true' }
186
+ expect(subject.authorize_params['enable_granular_consent']).to eq('true')
187
+ end
188
+ end
189
+
179
190
  describe 'scope' do
180
191
  it 'should expand scope shortcuts' do
181
192
  @options = { scope: 'calendar' }
@@ -373,7 +384,7 @@ describe OmniAuth::Strategies::GoogleOauth2 do
373
384
  subject.options.client_options[:connection_build] = proc do |builder|
374
385
  builder.request :url_encoded
375
386
  builder.adapter :test do |stub|
376
- stub.get('/oauth2/v3/tokeninfo?access_token=valid_access_token') do
387
+ stub.post('/oauth2/v3/tokeninfo', 'access_token=valid_access_token') do
377
388
  [200, { 'Content-Type' => 'application/json; charset=UTF-8' }, JSON.dump(
378
389
  aud: '000000000000.apps.googleusercontent.com',
379
390
  sub: '123456789',
@@ -770,7 +781,7 @@ describe OmniAuth::Strategies::GoogleOauth2 do
770
781
  subject.options.client_options[:connection_build] = proc do |builder|
771
782
  builder.request :url_encoded
772
783
  builder.adapter :test do |stub|
773
- stub.get('/oauth2/v3/tokeninfo?access_token=valid_access_token') do
784
+ stub.post('/oauth2/v3/tokeninfo', 'access_token=valid_access_token') do
774
785
  [200, { 'Content-Type' => 'application/json; charset=UTF-8' }, JSON.dump(
775
786
  aud: '000000000000.apps.googleusercontent.com',
776
787
  sub: '123456789',
@@ -781,7 +792,7 @@ describe OmniAuth::Strategies::GoogleOauth2 do
781
792
  expires_in: 436
782
793
  )]
783
794
  end
784
- stub.get('/oauth2/v3/tokeninfo?access_token=invalid_access_token') do
795
+ stub.post('/oauth2/v3/tokeninfo', 'access_token=invalid_access_token') do
785
796
  [400, { 'Content-Type' => 'application/json; charset=UTF-8' }, JSON.dump(error_description: 'Invalid Value')]
786
797
  end
787
798
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-google-oauth2
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Ellithorpe
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2022-09-05 00:00:00.000000000 Z
12
+ date: 2024-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: jwt
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 2.0.6
34
+ version: '2.0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 2.0.6
41
+ version: '2.0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: omniauth
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -59,14 +59,14 @@ dependencies:
59
59
  requirements:
60
60
  - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: 1.8.0
62
+ version: '1.8'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: 1.8.0
69
+ version: '1.8'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rake
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -120,7 +120,6 @@ files:
120
120
  - ".github/workflows/ci.yml"
121
121
  - ".gitignore"
122
122
  - ".rubocop.yml"
123
- - ".travis.yml"
124
123
  - CHANGELOG.md
125
124
  - Gemfile
126
125
  - README.md
data/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- rvm:
4
- - '2.3.8'
5
- - '2.4.10'
6
- - '2.5.8'
7
- - '2.6.6'
8
- - '2.7.2'
9
- - '3.0.0'