omniauth-zalo 0.1.4 → 0.1.5

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
2
  SHA256:
3
- metadata.gz: fb72119b74863c473c1d8d613f9a2bbc54f5566cf771cbd3d0e3922f5f615e35
4
- data.tar.gz: c391c3f835985655a3ac631a1df44c524e23237f04103b542681d719baf19752
3
+ metadata.gz: 292344ac127119e787f65937437da02b1b78695e0619449e87bddca5af2be89d
4
+ data.tar.gz: b8e4311dd36265f0a86cfaa015f92002ae5e19503493672515e123e63db55dc2
5
5
  SHA512:
6
- metadata.gz: 8ecab798f75edc89fd1d537c67587224d1f59c1187a2b6d0742ce0b44c86c2401937373620929c2cd0b1aaeae4c9fc084c595b0f8793915b846532333a6d9d6a
7
- data.tar.gz: a6defc433f4d9df4e5f3b8f3d93fc7e9ac1e6b46a80aec2c17ea5b70133353ece36b3575440bad2f460707d92e7f24eae07d627c4965f0aaf71b0b844be9c9ea
6
+ metadata.gz: a60be850cc6fccb9f2f6d00e53091f971a64e21abbd94af369e121422182f88919abb8b97099e7f8baf3c2c9ad4c796135fdac365db3395076956a477203518d
7
+ data.tar.gz: 964626fc00cfacb419a7baf1f0f9d1355181169ac51cfaa1dde481efb065e543c0f441f8a726d59ccc8d529f2f361fbb1c251c7cc9a3512f226126fe786aea7d
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
- # Omniauth::Zalo
1
+ # OmniAuth::Zalo
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/omniauth/zalo`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ OmniAuth strategy for [Sign In with Zalo](https://developers.zalo.me/).
6
4
 
7
5
  ## Installation
8
6
 
@@ -14,7 +12,7 @@ gem 'omniauth-zalo'
14
12
 
15
13
  And then execute:
16
14
 
17
- $ bundle
15
+ $ bundle install
18
16
 
19
17
  Or install it yourself as:
20
18
 
@@ -23,28 +21,18 @@ Or install it yourself as:
23
21
  ## Usage
24
22
  omniauth.rb
25
23
 
26
- ```
24
+ ```ruby
27
25
  Rails.application.config.middleware.use OmniAuth::Builder do
28
26
  provider :zalo, ENV['APP_ID'], env['SERECT_ID']
29
27
  end
30
28
  ```
31
29
 
32
- TODO: Write usage instructions here
33
-
34
- ## Development
35
-
36
- After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
37
-
38
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
39
30
 
40
31
  ## Contributing
41
32
 
42
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/omniauth-zalo. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
33
+ Bug reports and pull requests are welcome on GitHub at https://github.com/nguyenthanhcong101096/omniauth-zalo
43
34
 
44
35
  ## License
45
36
 
46
37
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
47
38
 
48
- ## Code of Conduct
49
-
50
- Everyone interacting in the Omniauth::Zalo project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/omniauth-zalo/blob/master/CODE_OF_CONDUCT.md).
@@ -0,0 +1,46 @@
1
+ module OmniAuth
2
+ module Strategies
3
+ module BuildAccessToken
4
+ def oauth2_access_token
5
+ access_token_response = client.request(access_token_method, access_token_url, headers: access_token_headers, parse: :json).parsed
6
+
7
+ hash = {
8
+ :access_token => access_token_response["access_token"],
9
+ :expires_in => access_token_response["expires_in"],
10
+ }
11
+
12
+ ::OAuth2::AccessToken.from_hash(client, hash)
13
+ end
14
+
15
+ def get_user_info
16
+ @raw_info ||= JSON.load(access_token.get("https://graph.zalo.me/v2.0/me?access_token=#{access_token.token}&fields=id,birthday,name,gender,picture,phone").body)
17
+ rescue ::Errno::ETIMEDOUT
18
+ raise ::Timeout::Error
19
+ end
20
+
21
+ private
22
+
23
+ def access_token_method
24
+ options.client_options.token_method
25
+ end
26
+
27
+ def access_token_headers
28
+ { "secret_key" => options.client_secret }
29
+ end
30
+
31
+ def access_token_url
32
+ client.token_url(access_token_params)
33
+ end
34
+
35
+ def access_token_params
36
+ {}.tap do |params|
37
+ params[:redirect_uri] = callback_url
38
+ params[:app_id] = options.client_id
39
+ params[:code] = request.params['code']
40
+ params[:code_verifier] = options.client_options.code_verifier
41
+ params[:grant_type] = options.client_options.grant_type
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -4,13 +4,18 @@ require 'json'
4
4
  module OmniAuth
5
5
  module Strategies
6
6
  class Zalo < OmniAuth::Strategies::OAuth2
7
+ include BuildAccessToken
8
+
7
9
  option :name, 'zalo'
8
10
 
9
11
  option :client_options, {
10
12
  site: 'https://oauth.zaloapp.com',
11
- authorize_url: '/v3/auth',
12
- token_url: '/v3/access_token',
13
- token_method: :get,
13
+ authorize_url: '/v4/permission',
14
+ token_url: '/v4/access_token',
15
+ token_method: :post,
16
+ grant_type: 'authorization_code',
17
+ code_challenge: 'is5SvnFPQzBNP-nb-poEaFlsvK1a6S3NpVCz0vcHh0w',
18
+ code_verifier: 'h57bycdwryntewreomnbSyDrAG4kX7BeqS7g-luzvBE'
14
19
  }
15
20
 
16
21
  option :provider_ignores_state, true
@@ -25,17 +30,15 @@ module OmniAuth
25
30
  end
26
31
 
27
32
  def authorize_params
28
- super.merge(app_id: self.options.client_id)
33
+ super.merge(app_id: self.options.client_id, code_challenge: options.client_options.code_challenge)
29
34
  end
30
35
 
31
36
  def build_access_token
32
- token_url_params = {app_id: options.client_id, app_secret: options.client_secret, code: request.params['code'], redirect_uri: callback_url}.merge(token_params.to_hash(:symbolize_keys => true))
33
- parsed_response = client.request(options.client_options.token_method, client.token_url(token_url_params), parse: :json).parsed
34
- hash = {
35
- :access_token => parsed_response["access_token"],
36
- :expires_in => parsed_response["expires_in"],
37
- }
38
- ::OAuth2::AccessToken.from_hash(client, hash)
37
+ oauth2_access_token
38
+ end
39
+
40
+ def raw_info
41
+ get_user_info
39
42
  end
40
43
 
41
44
  alias :old_callback_url :callback_url
@@ -47,12 +50,6 @@ module OmniAuth
47
50
  old_callback_url
48
51
  end
49
52
  end
50
-
51
- def raw_info
52
- @raw_info ||= JSON.load(access_token.get("https://graph.zalo.me/v2.0/me?access_token=#{access_token.token}&fields=id,birthday,name,gender,picture,phone").body)
53
- rescue ::Errno::ETIMEDOUT
54
- raise ::Timeout::Error
55
- end
56
53
  end
57
54
  end
58
55
  end
@@ -1,5 +1,5 @@
1
1
  module Omniauth
2
2
  module Zalo
3
- VERSION = "0.1.4"
3
+ VERSION = "0.1.5"
4
4
  end
5
5
  end
data/lib/omniauth/zalo.rb CHANGED
@@ -2,6 +2,7 @@ require 'rails'
2
2
  require 'set'
3
3
  require 'active_support/dependencies'
4
4
  require 'omniauth/zalo/version'
5
+ require 'omniauth/strategies/build_access_token'
5
6
  require 'omniauth/strategies/zalo'
6
7
 
7
8
  module Omniauth
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-zalo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - nguyenthanhcong101096
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-16 00:00:00.000000000 Z
11
+ date: 2022-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -74,20 +74,16 @@ files:
74
74
  - Rakefile
75
75
  - bin/console
76
76
  - bin/setup
77
+ - lib/omniauth/strategies/build_access_token.rb
77
78
  - lib/omniauth/strategies/zalo.rb
78
79
  - lib/omniauth/zalo.rb
79
- - lib/omniauth/zalo/oauth.rb
80
80
  - lib/omniauth/zalo/version.rb
81
- - omniauth-zalo-0.1.0.gem
82
- - omniauth-zalo-0.1.1.gem
83
- - omniauth-zalo-0.1.2.gem
84
- - omniauth-zalo-0.1.3.gem
85
81
  - omniauth-zalo.gemspec
86
82
  homepage: https://github.com/nguyenthanhcong101096/omniauth-zalo
87
83
  licenses:
88
84
  - Apache-2.0
89
85
  metadata: {}
90
- post_install_message:
86
+ post_install_message:
91
87
  rdoc_options: []
92
88
  require_paths:
93
89
  - lib
@@ -102,9 +98,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
98
  - !ruby/object:Gem::Version
103
99
  version: '0'
104
100
  requirements: []
105
- rubyforge_project:
106
- rubygems_version: 2.7.6
107
- signing_key:
101
+ rubygems_version: 3.1.6
102
+ signing_key:
108
103
  specification_version: 4
109
104
  summary: this is the all module for wakuwaku appkication
110
105
  test_files: []
@@ -1,25 +0,0 @@
1
- # module Omniauth
2
- # class Zalo::Oauth
3
- # attr_reader :app_id, :app_secret, :redirect_uri, :state
4
-
5
- # # client_options = {
6
- # # site: 'https://oauth.zaloapp.com',
7
- # # authorize_url: "/v3/auth?app_id=#{app_id}&redirect_uri=#{redirect_uri}&state=#{state}",
8
- # # access_token_url: "/v3/access_token?app_id=#{app_id}&app_secret=#{app_secret}&code=#{code}",
9
- # # account_info_url: "https://graph.zalo.me/v2.0/me?access_token=#{token}&fields=id,birthday,name,gender,picture,phone"
10
- # # }
11
-
12
- # def initialize(app_id, app_secret, redirect_uri)
13
- # @app_id = app_id
14
- # @app_secret = app_secret
15
- # @redirect_uri = redirect_uri
16
- # @state = state_hex
17
- # end
18
-
19
- # private
20
-
21
- # def state_hex
22
- # SecureRandom.hex
23
- # end
24
- # end
25
- # end
Binary file
Binary file
Binary file
Binary file