omniauth-yahoo_auth 0.1.1 → 0.2.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: 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: []