omniauth-yahoo_auth 0.1.1 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: eb611f88e196fb2ba3c9248121d7a18b1dc58699
4
- data.tar.gz: eaf3939a55d6b52412d351f760d1dbedbb8fdd8a
2
+ SHA256:
3
+ metadata.gz: 249bf29e9672b7ce7262770c5fc486d0bff7e9a94f27819b40232ab8b9571d76
4
+ data.tar.gz: d763f58cc37cdfdb003762bfa1a6cf29c69dd3e027928d543d7cdaaf4200c121
5
5
  SHA512:
6
- metadata.gz: '01883fe521693f2c9a0e56739117755c635a2a06e5ae95cad585ad5f29e954604b2a6da648cc1c8bb869f0983d5af48bbbc11a351c1b323a026aaaaf6d500a39'
7
- data.tar.gz: 69c42f9531ea42e01cfb37ff09f3c52a7c77bf2234b532b95410ecbf0f9bd8845b78bd41e00dc8fa7bada81f2156d09db7277758ef1cead91b5dd4d96bfeebce
6
+ metadata.gz: f65f8467d0da2e15d20ee86ef08d7711750dff03a5b4af95598609aa870709f232b12cb08a472f87e6d549a7a1672ac351e10e0d8ab4f60cf9936935dfac2b6f
7
+ data.tar.gz: 4698b2672eb24bf563d74132d7d29d8cb1b8ea7009ddfcbea58eaef4eed93c9af49b406dc48081912cc3f53ed5a91f746cccd448d6380a72fe7da58e86a57b7d
data/README.md CHANGED
@@ -46,16 +46,16 @@ Option name | Default | Explanation
46
46
  --- | --- | ---
47
47
  `name` | `yahoo_auth` | It can be changed to any value, for example `yahoo`. The OmniAuth URL will thus change to /auth/yahoo .
48
48
  `redirect_uri` | `/auth/yahoo/callback` | Specify a custom callback URL used during the server-side flow. Default is `https://www.your_callback_domain/auth/yahoo/callback`
49
- `image_size` | `192x192` | Set the size for the returned image in the auth hash. Valid options include sizes: 16x16, 24x24, 32x32, 48x48, 64x64, 96x96, 128x128, 192x192
50
49
 
51
50
  For example:
52
51
 
53
52
  ```ruby
54
53
  Rails.application.config.middleware.use OmniAuth::Builder do
55
- provider :yahoo_auth, ENV['YAHOO_APP_ID'], ENV['YAHOO_APP_SECRET'],
56
- { name: "yahoo",
57
- redirect_uri: "https://www.your_callback_domain/auth/yahoo/callback",
58
- image_size: "96x96"}
54
+ provider :yahoo_auth,
55
+ ENV['YAHOO_APP_ID'],
56
+ ENV['YAHOO_APP_SECRET'],
57
+ name: "yahoo",
58
+ redirect_uri: "https://www.your_callback_domain/auth/yahoo/callback"
59
59
  end
60
60
  ```
61
61
 
@@ -79,16 +79,20 @@ Here's an example *Auth Hash* available in `request.env['omniauth.auth']`:
79
79
  expires: true # this will always be true.
80
80
  },
81
81
  extra: {
82
- gender: 'M',
83
- language: 'en-IN',
84
- location: 'User Location',
85
- birth_year: 'User birth year',
86
- birth_date: 'User birth date',
87
- addresses: 'User addresses',
88
- urls: {
89
- default_image: 'https://s.yimg.com/wm/modern/images/default_user_profile_pic_192.png',
90
- profile: 'http://profile.yahoo.com/KBA...'
91
- }
82
+ sub: '',
83
+ name: '',
84
+ middle_name: '',
85
+ nickname: '',
86
+ gender: 'M',
87
+ language: 'en-IN',
88
+ website: '',
89
+ birth_date: '',
90
+ zone_info: '',
91
+ updated_at: '',
92
+ email_verified: true,
93
+ address: '',
94
+ phone_number: '',
95
+ phone_number_verified: false,
92
96
  }
93
97
  }
94
98
  ```
@@ -123,16 +127,16 @@ Then make sure your callbacks controller is setup.
123
127
  # app/controllers/users/omniauth_callbacks_controller.rb
124
128
  class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
125
129
  def yahoo_auth
126
- # You need to implement the method below in your model (e.g. app/models/user.rb)
127
- @user = User.from_omniauth(request.env['omniauth.auth'])
128
-
129
- if @user.persisted?
130
- flash[:notice] = I18n.t 'devise.omniauth_callbacks.success', kind: 'Yahoo'
131
- sign_in_and_redirect @user, event: :authentication
132
- else
133
- session['devise.yahoo_data'] = request.env['omniauth.auth']
134
- redirect_to new_user_registration_url, alert: @user.errors.full_messages.join("\n")
135
- end
130
+ # You need to implement the method below in your model (e.g. app/models/user.rb)
131
+ @user = User.from_omniauth(request.env['omniauth.auth'])
132
+
133
+ if @user.persisted?
134
+ flash[:notice] = I18n.t 'devise.omniauth_callbacks.success', kind: 'Yahoo'
135
+ sign_in_and_redirect @user, event: :authentication
136
+ else
137
+ session['devise.yahoo_data'] = request.env['omniauth.auth']
138
+ redirect_to new_user_registration_url, alert: @user.errors.full_messages.join("\n")
139
+ end
136
140
  end
137
141
  end
138
142
  ```
@@ -142,16 +146,16 @@ and bind to or create the user
142
146
  ```ruby
143
147
  # app/models/user.rb
144
148
  def self.from_omniauth(access_token)
145
- data = access_token.info
146
- user = User.where(email: data['email']).first
147
- # Uncomment the section below if you want users to be created if they don't exist
148
- # unless user
149
- # user = User.create(name: data['nickname'],
150
- # email: data['email'],
151
- # password: Devise.friendly_token[0,20]
152
- # )
153
- # end
154
- user
149
+ data = access_token.info
150
+ user = User.where(email: data['email']).first
151
+ # Uncomment the section below if you want users to be created if they don't exist
152
+ # unless user
153
+ # user = User.create(name: data['nickname'],
154
+ # email: data['email'],
155
+ # password: Devise.friendly_token[0,20]
156
+ # )
157
+ # end
158
+ user
155
159
  end
156
160
  ```
157
161
 
@@ -3,9 +3,8 @@ require 'base64'
3
3
 
4
4
  module OmniAuth
5
5
  module Strategies
6
- # Main class for Yahoo Auth Startegy
7
6
  class YahooAuth < OmniAuth::Strategies::OAuth2
8
- SOCIAL_API_URL = 'https://social.yahooapis.com/v1/user/'
7
+ USER_INFO_API = 'https://api.login.yahoo.com/openid/v1/userinfo'
9
8
 
10
9
  option :name, 'yahoo_auth'
11
10
 
@@ -15,38 +14,42 @@ module OmniAuth
15
14
  token_url: 'https://api.login.yahoo.com/oauth2/get_token'
16
15
  }
17
16
 
18
- uid { access_token.params['xoauth_yahoo_guid'] }
17
+ uid do
18
+ access_token.params['xoauth_yahoo_guid']
19
+ end
19
20
 
20
21
  info do
21
22
  prune!(
22
- nickname: raw_info['nickname'],
23
- email: get_primary_email,
24
- first_name: raw_info['givenName'],
25
- last_name: raw_info['familyName'],
26
- image: get_user_image
23
+ nickname: raw_info['preferred_username'],
24
+ email: raw_info['email'],
25
+ first_name: raw_info['given_name'],
26
+ last_name: raw_info['family_name'],
27
+ image: raw_info['picture'],
27
28
  )
28
29
  end
29
30
 
30
31
  extra do
31
32
  prune!(
33
+ sub: raw_info['sub'],
34
+ name: raw_info['name'],
35
+ middle_name: raw_info['middle_name'],
36
+ nickname: raw_info['nickname'],
32
37
  gender: raw_info['gender'],
33
- language: raw_info['lang'],
34
- location: raw_info['location'],
35
- birth_year: raw_info['birthYear'],
38
+ language: raw_info['locale'],
39
+ website: raw_info['website'],
36
40
  birth_date: raw_info['birthdate'],
37
- addresses: raw_info['addresses'],
38
- urls: {
39
- default_image: raw_info['image']['imageUrl'],
40
- profile: raw_info['profileUrl']
41
- }
41
+ zone_info: raw_info['zoneinfo'],
42
+ updated_at: raw_info['updated_at'],
43
+ email_verified: raw_info['email_verified'],
44
+ address: raw_info['address'],
45
+ phone_number: raw_info['phone_number'],
46
+ phone_number_verified: raw_info['phone_number_verified'],
42
47
  )
43
48
  end
44
49
 
45
50
  def raw_info
46
- # This is a public API and does not need signing or authentication
47
- raw_info_url = "#{SOCIAL_API_URL}#{uid}/profile?format=json"
48
- @raw_info ||= access_token.get(raw_info_url).parsed['profile'] || {}
49
- rescue ::Errno::ETIMEDOUT
51
+ @raw_info ||= access_token.get(USER_INFO_API).parsed
52
+ rescue ::Errno::ETIMEDOUT
50
53
  raise ::Timeout::Error
51
54
  end
52
55
 
@@ -58,7 +61,7 @@ module OmniAuth
58
61
  private
59
62
 
60
63
  def callback_url
61
- options[:redirect_uri] || (full_host + script_name + callback_path)
64
+ options[:redirect_uri] || "#{full_host}#{script_name}#{callback_path}"
62
65
  end
63
66
 
64
67
  def prune!(hash)
@@ -68,42 +71,20 @@ module OmniAuth
68
71
  end
69
72
  end
70
73
 
71
- def get_primary_email
72
- email = nil
73
- email_hash = raw_info['emails']
74
- if email_hash
75
- email_info = email_hash.find{|e| e['primary']} || email_hash.first
76
- email = email_info['handle']
77
- end
78
- email
79
- end
80
-
81
- def get_user_image
82
- image_size = options[:image_size]
83
- if image_size
84
- image_url = "#{SOCIAL_API_URL}#{uid}/profile/image/#{image_size}?format=json"
85
- image_hash = access_token.get(image_url).parsed["image"] || {}
86
- image_hash["imageUrl"]
87
- else
88
- # Return default image
89
- raw_info['image']['imageUrl']
90
- end
91
- end
92
-
93
74
  def get_access_token(request)
94
- verifier = request.params['code']
95
- auth = "Basic #{Base64.strict_encode64("#{options.client_id}:#{options.client_secret}")}"
96
- token = client.get_token(
97
- { redirect_uri: callback_url,
98
- code: verifier,
75
+ credentials = "#{options.client_id}:#{options.client_secret}"
76
+ auth = "Basic #{Base64.strict_encode64(credentials)}"
77
+
78
+ client.get_token(
79
+ {
80
+ redirect_uri: callback_url,
81
+ code: request.params['code'],
99
82
  grant_type: 'authorization_code',
100
83
  headers: { 'Authorization' => auth }
101
84
  }.merge(token_params.to_hash(symbolize_keys: true)),
102
- deep_symbolize(options.auth_token_params || {})
85
+ deep_symbolize(options.auth_token_params || {}),
103
86
  )
104
- token
105
87
  end
106
-
107
88
  end
108
89
  end
109
90
  end
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module YahooAuth
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
@@ -11,7 +11,7 @@ Gem::Specification.new do |spec|
11
11
 
12
12
  spec.summary = "Yahoo OAuth2 Strategy for OmniAuth."
13
13
  spec.description = "Yahoo OAuth2 Strategy. Supports OAuth 2.0 client-side flow. It lets you sign-in a rails app using yahoo login."
14
- spec.homepage = "https://github.com/creative-karan/omniauth-yahoo_auth"
14
+ spec.homepage = "https://github.com/karan-pathak/omniauth-yahoo_auth"
15
15
  spec.license = "MIT"
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-yahoo_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karan Pathak
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-03 00:00:00.000000000 Z
11
+ date: 2021-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: omniauth
@@ -116,11 +116,11 @@ files:
116
116
  - lib/omniauth/yahoo_auth.rb
117
117
  - lib/omniauth/yahoo_auth/version.rb
118
118
  - omniauth-yahoo_auth.gemspec
119
- homepage: https://github.com/creative-karan/omniauth-yahoo_auth
119
+ homepage: https://github.com/karan-pathak/omniauth-yahoo_auth
120
120
  licenses:
121
121
  - MIT
122
122
  metadata: {}
123
- post_install_message:
123
+ post_install_message:
124
124
  rdoc_options: []
125
125
  require_paths:
126
126
  - lib
@@ -135,9 +135,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  - !ruby/object:Gem::Version
136
136
  version: '0'
137
137
  requirements: []
138
- rubyforge_project:
139
- rubygems_version: 2.5.2
140
- signing_key:
138
+ rubygems_version: 3.1.4
139
+ signing_key:
141
140
  specification_version: 4
142
141
  summary: Yahoo OAuth2 Strategy for OmniAuth.
143
142
  test_files: []