omniauth-gplus 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3b27c6b999a563a295475a758b28a5abb25615be
4
+ data.tar.gz: 3d50853471f6f69980a9e428da69b51171bf4ce2
5
+ SHA512:
6
+ metadata.gz: 586765f643616bc55d40312d4d12cb4091e4075239651194ceae415d7b46d4a4885aad878c1e7f12226393e92c0bf19057ef6d0b96cd7ca4fc9be284af18341d
7
+ data.tar.gz: c117b95faca25542bfc7333cc956a21265d7f3c0157aea4353d4f3c63960f35e1dba149c8f33efbfdbb1e60354d899629b0b51ce42c8592273d39962fcd8420b
@@ -0,0 +1 @@
1
+ omniauth-gplus
@@ -0,0 +1 @@
1
+ ruby-2.0.0
@@ -1,5 +1,7 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
+ - 2.0.0
5
+ - ruby-head
4
6
  - rbx-19mode
5
7
  - jruby-19mode
data/README.md CHANGED
@@ -22,12 +22,34 @@ Rails.application.config.middleware.use OmniAuth::Builder do
22
22
  end
23
23
  ```
24
24
 
25
- By default the gem uses the `email` scope, but you can get more information with:
25
+ By default the gem uses the `userinfo.email` scope, but you can get more information by using this interface:
26
26
 
27
27
  ``` ruby
28
- provider :gplus, ENV['GPLUS_KEY'], ENV['GPLUS_SECRET'], scope: 'email, profile'
28
+ provider :gplus, ENV['GPLUS_KEY'], ENV['GPLUS_SECRET'], scope: 'userinfo.email, userinfo.profile'
29
29
  ```
30
30
 
31
+ Here are the different scopes:
32
+
33
+ - https://www.googleapis.com/auth/userinfo.email
34
+ - https://www.googleapis.com/auth/userinfo.profile
35
+
36
+ To identify the user as "me" in all requests use this scope:
37
+
38
+ - https://www.googleapis.com/auth/plus.me
39
+
40
+ To get all of these AND log the user in:
41
+
42
+ - https://www.googleapis.com/auth/plus.login
43
+
44
+ If you use the `plus.login` scope you can request `visibleactions` in order to allow your app to post App Activities on behalf of your users. To request `visibleactions`, use the following interface:
45
+
46
+ ```ruby
47
+ provider :gplus, ENV['GPLUS_KEY'], ENV['GPLUS_SECRET'], scope: 'plus.login', request_visible_actions: 'AddActivity,BuyActivity'
48
+ ```
49
+
50
+ To see and learn about all of the available App Activity types, visit: https://developers.google.com/+/api/moment-types/
51
+
52
+
31
53
  The information schema looks like this:
32
54
 
33
55
  ``` ruby
@@ -113,7 +135,8 @@ Contributing
113
135
  * **DO NOT CHANGE** ANY OF THESE (without making a new branch for *that* change):
114
136
  * `*.gemspec`
115
137
  * `Rakefile`
116
- * `.rvmrc`
138
+ * `.ruby-version`
139
+ * `.ruby-gemset`
117
140
  * `.gitignore`
118
141
  * Any part of the git history
119
142
  * **Write tests** specifically for the changes you've made, if no test exist
@@ -125,7 +148,7 @@ Credits
125
148
  -------
126
149
 
127
150
  - [Sam Dunne](https://github.com/samdunne), for initial work and bug fixes
128
-
151
+
129
152
 
130
153
  License
131
154
  -------
@@ -1,5 +1,5 @@
1
1
  module OmniAuth
2
2
  module GPlus
3
- VERSION = "1.1.1"
3
+ VERSION = "1.2.0"
4
4
  end
5
5
  end
@@ -7,10 +7,14 @@ module OmniAuth
7
7
  token_url: 'https://www.google.com/accounts/o8/oauth2/token'
8
8
  }
9
9
 
10
+ option :authorize_options, [:scope, :request_visible_actions]
11
+
10
12
  option :scope, 'userinfo.email'
11
13
 
14
+ option :request_visible_actions, nil
15
+
12
16
  option :uid_field, :uid
13
-
17
+
14
18
  uid do
15
19
  raw_info['id']
16
20
  end
@@ -40,12 +44,23 @@ module OmniAuth
40
44
  def authorize_params
41
45
  super.tap do |params|
42
46
  params['scope'] = format_scopes(params['scope'])
47
+ if (params['request_visible_actions'])
48
+ params['request_visible_actions'] = format_actions(params['request_visible_actions'])
49
+ end
43
50
  custom_parameters(params)
44
51
  end
45
52
  end
46
53
 
47
54
  private
48
55
 
56
+ def format_actions(actions)
57
+ actions.split(/,\s*/).map(&method(:format_action)).join(" ")
58
+ end
59
+
60
+ def format_action(action)
61
+ "http://schemas.google.com/#{action}"
62
+ end
63
+
49
64
  def format_scopes(scopes)
50
65
  scopes.split(/,\s*/).map(&method(:format_scope)).join(" ")
51
66
  end
@@ -55,11 +70,16 @@ module OmniAuth
55
70
  end
56
71
 
57
72
  def custom_parameters(params)
58
- ["scope", "client_options"].each { |k| add_key_to_params(params, k) }
73
+ ["scope", "client_options", "state", "request_visible_actions"].each { |k| add_key_to_params(params, k) }
59
74
  end
60
75
 
61
76
  def add_key_to_params(params, key)
62
- params[key] = request.params[key] if request.params[key]
77
+ if request.params[key]
78
+ params[key] = request.params[key]
79
+
80
+ # to support omniauth-oauth2's auto csrf protection
81
+ session['omniauth.state'] = params[:state] if key == 'state'
82
+ end
63
83
  end
64
84
 
65
85
  def raw_info
@@ -36,6 +36,27 @@ class TestOmniAuthGPlus < MiniTest::Unit::TestCase
36
36
  assert_equal(expected, actual)
37
37
  end
38
38
 
39
+ def test_default_request_visible_actions_is_nil
40
+ expected = nil
41
+ actual = strategy.options['request_visible_actions']
42
+ assert_equal(expected, actual)
43
+ end
44
+
45
+ def test_state_state_is_included_in_request_params_when_present
46
+ expected = 'some_state'
47
+ @request.stubs(:params).returns({ 'state' => expected })
48
+ assert_equal expected, strategy.authorize_params[:state]
49
+ end
50
+
51
+ def test_stores_state_in_the_session_when_present
52
+ expected = 'some_state'
53
+ @request.stubs(:params).returns({ 'state' => expected })
54
+ refute_empty strategy.authorize_params['state']
55
+ assert_equal expected, strategy.authorize_params[:state]
56
+ refute_empty strategy.session['omniauth.state']
57
+ assert_equal expected, strategy.session['omniauth.state']
58
+ end
59
+
39
60
  def test_that_it_has_a_version_number
40
61
  refute_nil OmniAuth::GPlus::VERSION
41
62
  end
@@ -49,7 +70,7 @@ class TestOmniAuthGPlus < MiniTest::Unit::TestCase
49
70
  actual = new_oauth.options.uid_field
50
71
  assert_equal(expected, actual)
51
72
  end
52
-
73
+
53
74
  def test_uid_not_nil
54
75
  refute_nil(new_oauth.options.uid_field)
55
76
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-gplus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
5
- prerelease:
4
+ version: 1.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Kurtis Rainbolt-Greene
@@ -10,136 +9,120 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-03-25 00:00:00.000000000 Z
12
+ date: 2013-07-16 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
- version_requirements: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ~>
19
- - !ruby/object:Gem::Version
20
- version: '1.1'
21
- none: false
22
- prerelease: false
23
15
  name: omniauth-oauth2
24
16
  requirement: !ruby/object:Gem::Requirement
25
17
  requirements:
26
18
  - - ~>
27
19
  - !ruby/object:Gem::Version
28
20
  version: '1.1'
29
- none: false
30
21
  type: :runtime
31
- - !ruby/object:Gem::Dependency
22
+ prerelease: false
32
23
  version_requirements: !ruby/object:Gem::Requirement
33
24
  requirements:
34
- - - ! '>='
25
+ - - ~>
35
26
  - !ruby/object:Gem::Version
36
- version: '0'
37
- none: false
38
- prerelease: false
27
+ version: '1.1'
28
+ - !ruby/object:Gem::Dependency
39
29
  name: bundler
40
30
  requirement: !ruby/object:Gem::Requirement
41
31
  requirements:
42
- - - ! '>='
32
+ - - '>='
43
33
  - !ruby/object:Gem::Version
44
34
  version: '0'
45
- none: false
46
35
  type: :development
47
- - !ruby/object:Gem::Dependency
36
+ prerelease: false
48
37
  version_requirements: !ruby/object:Gem::Requirement
49
38
  requirements:
50
- - - ! '>='
39
+ - - '>='
51
40
  - !ruby/object:Gem::Version
52
41
  version: '0'
53
- none: false
54
- prerelease: false
42
+ - !ruby/object:Gem::Dependency
55
43
  name: rake
56
44
  requirement: !ruby/object:Gem::Requirement
57
45
  requirements:
58
- - - ! '>='
46
+ - - '>='
59
47
  - !ruby/object:Gem::Version
60
48
  version: '0'
61
- none: false
62
49
  type: :development
63
- - !ruby/object:Gem::Dependency
50
+ prerelease: false
64
51
  version_requirements: !ruby/object:Gem::Requirement
65
52
  requirements:
66
- - - ! '>='
53
+ - - '>='
67
54
  - !ruby/object:Gem::Version
68
55
  version: '0'
69
- none: false
70
- prerelease: false
56
+ - !ruby/object:Gem::Dependency
71
57
  name: mocha
72
58
  requirement: !ruby/object:Gem::Requirement
73
59
  requirements:
74
- - - ! '>='
60
+ - - '>='
75
61
  - !ruby/object:Gem::Version
76
62
  version: '0'
77
- none: false
78
63
  type: :development
79
- - !ruby/object:Gem::Dependency
64
+ prerelease: false
80
65
  version_requirements: !ruby/object:Gem::Requirement
81
66
  requirements:
82
- - - ! '>='
67
+ - - '>='
83
68
  - !ruby/object:Gem::Version
84
69
  version: '0'
85
- none: false
86
- prerelease: false
70
+ - !ruby/object:Gem::Dependency
87
71
  name: yard
88
72
  requirement: !ruby/object:Gem::Requirement
89
73
  requirements:
90
- - - ! '>='
74
+ - - '>='
91
75
  - !ruby/object:Gem::Version
92
76
  version: '0'
93
- none: false
94
77
  type: :development
95
- - !ruby/object:Gem::Dependency
78
+ prerelease: false
96
79
  version_requirements: !ruby/object:Gem::Requirement
97
80
  requirements:
98
- - - ! '>='
81
+ - - '>='
99
82
  - !ruby/object:Gem::Version
100
83
  version: '0'
101
- none: false
102
- prerelease: false
84
+ - !ruby/object:Gem::Dependency
103
85
  name: kramdown
104
86
  requirement: !ruby/object:Gem::Requirement
105
87
  requirements:
106
- - - ! '>='
88
+ - - '>='
107
89
  - !ruby/object:Gem::Version
108
90
  version: '0'
109
- none: false
110
91
  type: :development
111
- - !ruby/object:Gem::Dependency
92
+ prerelease: false
112
93
  version_requirements: !ruby/object:Gem::Requirement
113
94
  requirements:
114
- - - ! '>='
95
+ - - '>='
115
96
  - !ruby/object:Gem::Version
116
97
  version: '0'
117
- none: false
118
- prerelease: false
98
+ - !ruby/object:Gem::Dependency
119
99
  name: pry
120
100
  requirement: !ruby/object:Gem::Requirement
121
101
  requirements:
122
- - - ! '>='
102
+ - - '>='
123
103
  - !ruby/object:Gem::Version
124
104
  version: '0'
125
- none: false
126
105
  type: :development
127
- - !ruby/object:Gem::Dependency
106
+ prerelease: false
128
107
  version_requirements: !ruby/object:Gem::Requirement
129
108
  requirements:
130
- - - ! '>='
109
+ - - '>='
131
110
  - !ruby/object:Gem::Version
132
111
  version: '0'
133
- none: false
134
- prerelease: false
112
+ - !ruby/object:Gem::Dependency
135
113
  name: coveralls
136
114
  requirement: !ruby/object:Gem::Requirement
137
115
  requirements:
138
- - - ! '>='
116
+ - - '>='
139
117
  - !ruby/object:Gem::Version
140
118
  version: '0'
141
- none: false
142
119
  type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
143
126
  description: A Google+ OAuth2 solution for Omniauth
144
127
  email:
145
128
  - me@kurtisrainboltgreene.name
@@ -150,7 +133,8 @@ extra_rdoc_files: []
150
133
  files:
151
134
  - .coveralls.yml
152
135
  - .gitignore
153
- - .rvmrc
136
+ - .ruby-gemset
137
+ - .ruby-version
154
138
  - .travis.yml
155
139
  - Gemfile
156
140
  - LICENSE.txt
@@ -165,33 +149,26 @@ files:
165
149
  homepage: http://krainboltgreene.github.com/omniauth-gplus
166
150
  licenses:
167
151
  - MIT
152
+ metadata: {}
168
153
  post_install_message:
169
154
  rdoc_options: []
170
155
  require_paths:
171
156
  - lib
172
157
  required_ruby_version: !ruby/object:Gem::Requirement
173
158
  requirements:
174
- - - ! '>='
159
+ - - '>='
175
160
  - !ruby/object:Gem::Version
176
- hash: 3554233067913369947
177
161
  version: '0'
178
- segments:
179
- - 0
180
- none: false
181
162
  required_rubygems_version: !ruby/object:Gem::Requirement
182
163
  requirements:
183
- - - ! '>='
164
+ - - '>='
184
165
  - !ruby/object:Gem::Version
185
- hash: 3554233067913369947
186
166
  version: '0'
187
- segments:
188
- - 0
189
- none: false
190
167
  requirements: []
191
168
  rubyforge_project:
192
- rubygems_version: 1.8.25
169
+ rubygems_version: 2.0.5
193
170
  signing_key:
194
- specification_version: 3
171
+ specification_version: 4
195
172
  summary: A Google+ OAuth2 solution for Omniauth
196
173
  test_files:
197
174
  - test/helper.rb
data/.rvmrc DELETED
@@ -1,48 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # This is an RVM Project .rvmrc file, used to automatically load the ruby
4
- # development environment upon cd'ing into the directory
5
-
6
- # First we specify our desired <ruby>[@<gemset>], the @gemset name is optional,
7
- # Only full ruby name is supported here, for short names use:
8
- # echo "rvm use 1.9.3" > .rvmrc
9
- environment_id="ruby-1.9.3-p392@omniauth-gplus"
10
-
11
- # Uncomment the following lines if you want to verify rvm version per project
12
- # rvmrc_rvm_version="1.18.18 (stable)" # 1.10.1 seams as a safe start
13
- # eval "$(echo ${rvm_version}.${rvmrc_rvm_version} | awk -F. '{print "[[ "$1*65536+$2*256+$3" -ge "$4*65536+$5*256+$6" ]]"}' )" || {
14
- # echo "This .rvmrc file requires at least RVM ${rvmrc_rvm_version}, aborting loading."
15
- # return 1
16
- # }
17
-
18
- # First we attempt to load the desired environment directly from the environment
19
- # file. This is very fast and efficient compared to running through the entire
20
- # CLI and selector. If you want feedback on which environment was used then
21
- # insert the word 'use' after --create as this triggers verbose mode.
22
- if [[ -d "${rvm_path:-$HOME/.rvm}/environments"
23
- && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
24
- then
25
- \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
26
- [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]] &&
27
- \. "${rvm_path:-$HOME/.rvm}/hooks/after_use" || true
28
- else
29
- # If the environment file has not yet been created, use the RVM CLI to select.
30
- rvm --create "$environment_id" || {
31
- echo "Failed to create RVM environment '${environment_id}'."
32
- return 1
33
- }
34
- fi
35
-
36
- # If you use bundler, this might be useful to you:
37
- # if [[ -s Gemfile ]] && {
38
- # ! builtin command -v bundle >/dev/null ||
39
- # builtin command -v bundle | GREP_OPTIONS= \grep $rvm_path/bin/bundle >/dev/null
40
- # }
41
- # then
42
- # printf "%b" "The rubygem 'bundler' is not installed. Installing it now.\n"
43
- # gem install bundler
44
- # fi
45
- # if [[ -s Gemfile ]] && builtin command -v bundle >/dev/null
46
- # then
47
- # bundle install | GREP_OPTIONS= \grep -vE '^Using|Your bundle is complete'
48
- # fi