omniauth-wechat-oauth2 0.1.1 → 0.2.2

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: 90919b05aecd6b3de0d6d41e1c0e18bac5abbc10d70a2d59c406a4acc139cb99
4
- data.tar.gz: 70f0b3689eabd805a81e15c4ecc7ea80e68c2f1dfde663472d8f74807b9aa5df
3
+ metadata.gz: 7957db81f8a3ca70305b81820dfad15f36eb1e4995ce4decb99515f9763539cf
4
+ data.tar.gz: d48c9cef8cb649a4b4c941f5d16328ea54cb13c21f8d9ab883a539defac22f99
5
5
  SHA512:
6
- metadata.gz: ec12ab658d9e4a71ad8d7fee8af7e2a14d6884fb13fa92f70004becd5598bbffdc6a668b21089ef74d9e7a7c39e9138f2754f43eac7d67b5fadd8c3e133feef8
7
- data.tar.gz: 940c92c6ea780000f4b0a3cc1c207cee2828f2c7ae635825ae0e63a9ed1d32869de39fd75dfed0bef60f49675a95ec6900ca3e7ae0b8da8d902f62b19ae26f34
6
+ metadata.gz: a57cab028371e48d8f4e0c307e7172133c5b1a6715de8c8faaf63dc15702301e870a5192941427ed11c15f7b208b27af51ed260170002df34fc24d3d04fd74d1
7
+ data.tar.gz: 1a2af84613bf942a76a72d462e5196ab907378f7ef2ac6cf014ebf40eab41f7a22a743c3acff775e836bb5dc0dd7232b63157d6d98066d1e2ecf4a0dac2da205
data/README.md CHANGED
@@ -5,7 +5,7 @@ Omniauth-wechat-oauth2
5
5
  [![Security Check](https://hakiri.io/github/NeverMin/omniauth-wechat-oauth2/master.svg)][security]
6
6
  [![Build Status](https://travis-ci.org/NeverMin/omniauth-wechat-oauth2.svg)][travis]
7
7
 
8
- [gem]: https://rubygems.org/gems/omniauth-weibo-oauth2
8
+ [gem]: https://rubygems.org/gems/omniauth-wechat-oauth2
9
9
  [security]: https://hakiri.io/github/NeverMin/omniauth-wechat-oauth2/master
10
10
  [travis]: https://travis-ci.org/NeverMin/omniauth-wechat-oauth2
11
11
 
@@ -14,7 +14,8 @@ Wechat OAuth2 Strategy for OmniAuth 1.0.
14
14
 
15
15
  You need to get a wechat API key at: https://mp.weixin.qq.com
16
16
 
17
- Wechat oauth2 specification can be found at: https://mp.weixin.qq.com/wiki/index.php?title=网页授权获取用户基本信息
17
+ * Wechat oauth2 specification can be found at: https://mp.weixin.qq.com/wiki/index.php?title=网页授权获取用户基本信息
18
+ * Wechat Qiye oauth2 specification can be found at: http://qydev.weixin.qq.com/wiki/index.php?title=OAuth验证接口
18
19
 
19
20
  ## Installation
20
21
 
@@ -66,7 +67,8 @@ Here's an example of an authentication hash available in the callback by accessi
66
67
  province: "Changning",
67
68
  city: "Shanghai",
68
69
  country: "China",
69
- headimgurl: "http://image_url"
70
+ headimgurl: "http://image_url",
71
+ unionid: 'unionid'
70
72
  },
71
73
  :credentials => {
72
74
  :token => "token",
@@ -82,12 +84,55 @@ Here's an example of an authentication hash available in the callback by accessi
82
84
  province: "Changning",
83
85
  city: "Shanghai",
84
86
  country: "China",
85
- headimgurl: "http://image_url"
87
+ headimgurl: "http://image_url",
88
+ unionid: 'unionid'
86
89
  }
87
90
  }
88
91
  }
89
92
  ```
90
93
 
94
+ ## Wechat Qiye OAuth2
91
95
 
96
+ Wechat Qiey usage and configuration are the same with normal account above.
92
97
 
98
+ ```ruby
99
+ config.omniauth :wechat_qiye, ENV["WECHAT_APP_ID"], ENV["WECHAT_APP_SECRET"],
100
+ :authorize_params => {:scope => "snsapi_base"}
101
+ ```
93
102
 
103
+ Auth hash `request.env["omniauth.auth"]`
104
+
105
+ ```ruby
106
+ {
107
+ :provider => "wechat_qiye",
108
+ :uid => "123456789",
109
+ :info => {
110
+ userid: "userid",
111
+ name: "name",
112
+ department: [2],
113
+ gender: "1",
114
+ weixinid: "weixinid",
115
+ avatar: "avatar",
116
+ status: 1,
117
+ extattr: {"foo" => "bar"}
118
+ },
119
+ :credentials => {
120
+ :token => "token",
121
+ :refresh_token => "another_token",
122
+ :expires_at => 7200,
123
+ :expires => true
124
+ },
125
+ :extra => {
126
+ :raw_info => {
127
+ userid: "userid",
128
+ name: "name",
129
+ department: [2],
130
+ gender: "1",
131
+ weixinid: "weixinid",
132
+ avatar: "avatar",
133
+ status: 1,
134
+ extattr: {"foo" => "bar"}}
135
+ }
136
+ }
137
+ }
138
+ ```
@@ -1,2 +1 @@
1
- require "omniauth/strategies/wechat"
2
- require "omniauth/strategies/wechat_qiye"
1
+ require "omniauth/wechat"
@@ -7,15 +7,19 @@ module OmniAuth
7
7
 
8
8
  option :client_options, {
9
9
  site: "https://api.weixin.qq.com",
10
- authorize_url: "https://open.weixin.qq.com/connect/oauth2/authorize#wechat_redirect",
10
+ authorize_url: "https://open.weixin.qq.com/connect/qrconnect?#wechat_redirect",
11
11
  token_url: "/sns/oauth2/access_token",
12
12
  token_method: :get
13
13
  }
14
14
 
15
- option :authorize_params, {scope: "snsapi_userinfo"}
15
+ option :authorize_params, {scope: "snsapi_login"}
16
16
 
17
17
  option :token_params, {parse: :json}
18
18
 
19
+ def callback_url
20
+ full_host + script_name + callback_path
21
+ end
22
+
19
23
  uid do
20
24
  raw_info['openid']
21
25
  end
@@ -27,7 +31,9 @@ module OmniAuth
27
31
  province: raw_info['province'],
28
32
  city: raw_info['city'],
29
33
  country: raw_info['country'],
30
- headimgurl: raw_info['headimgurl']
34
+ headimgurl: raw_info['headimgurl'],
35
+ image: raw_info['headimgurl'],
36
+ unionid: raw_info['unionid']
31
37
  }
32
38
  end
33
39
 
@@ -36,8 +42,9 @@ module OmniAuth
36
42
  end
37
43
 
38
44
  def request_phase
39
- params = client.auth_code.authorize_params.merge(redirect_uri: callback_url).merge(authorize_params)
45
+ params = client.auth_code.authorize_params.merge(authorize_params)
40
46
  params["appid"] = params.delete("client_id")
47
+ params["redirect_uri"] = callback_url
41
48
  redirect client.authorize_url(params)
42
49
  end
43
50
 
@@ -45,28 +52,27 @@ module OmniAuth
45
52
  @uid ||= access_token["openid"]
46
53
  @raw_info ||= begin
47
54
  access_token.options[:mode] = :query
48
- if access_token["scope"] == "snsapi_userinfo"
49
- response = access_token.get("/sns/userinfo", :params => {"openid" => @uid, "lang" => "zh_CN"}, parse: :text)
50
- @raw_info = JSON.parse(response.body.gsub(/[\u0000-\u001f]+/, ''))
55
+ if access_token["scope"]&.include?("snsapi_login")
56
+ access_token.get("/sns/userinfo", :params => { "openid" => @uid, "lang" => "zh_CN" }, parse: :json).parsed
51
57
  else
52
- @raw_info = {"openid" => @uid }
53
- @raw_info.merge!("unionid" => access_token["unionid"]) if access_token["unionid"]
54
- @raw_info
58
+ { "openid" => @uid }
55
59
  end
56
60
  end
61
+ @raw_info
57
62
  end
58
63
 
59
64
  protected
60
65
  def build_access_token
61
66
  params = {
62
- 'appid' => client.id,
63
- 'secret' => client.secret,
64
- 'code' => request.params['code'],
65
- 'grant_type' => 'authorization_code'
67
+ 'appid' => client.id,
68
+ 'secret' => client.secret,
69
+ 'code' => request.params['code'],
70
+ 'grant_type' => 'authorization_code',
71
+ 'redirect_uri' => callback_url
66
72
  }.merge(token_params.to_hash(symbolize_keys: true))
67
73
  client.get_token(params, deep_symbolize(options.auth_token_params))
68
74
  end
69
75
 
70
76
  end
71
77
  end
72
- end
78
+ end
@@ -0,0 +1,2 @@
1
+ require "omniauth/strategies/wechat"
2
+ require "omniauth/strategies/wechat_qiye"
metadata CHANGED
@@ -1,63 +1,65 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-wechat-oauth2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
- - Skinnyworm
7
+ - Alex Hu
8
8
  - Never Min
9
- autorequire:
9
+ - Eric Guo
10
+ autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2019-03-15 00:00:00.000000000 Z
13
+ date: 2020-06-12 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: omniauth
16
17
  requirement: !ruby/object:Gem::Requirement
17
18
  requirements:
18
- - - ~>
19
+ - - ">="
19
20
  - !ruby/object:Gem::Version
20
21
  version: 1.3.2
21
22
  type: :runtime
22
23
  prerelease: false
23
24
  version_requirements: !ruby/object:Gem::Requirement
24
25
  requirements:
25
- - - ~>
26
+ - - ">="
26
27
  - !ruby/object:Gem::Version
27
28
  version: 1.3.2
28
29
  - !ruby/object:Gem::Dependency
29
30
  name: omniauth-oauth2
30
31
  requirement: !ruby/object:Gem::Requirement
31
32
  requirements:
32
- - - ~>
33
+ - - ">="
33
34
  - !ruby/object:Gem::Version
34
35
  version: 1.1.1
35
36
  type: :runtime
36
37
  prerelease: false
37
38
  version_requirements: !ruby/object:Gem::Requirement
38
39
  requirements:
39
- - - ~>
40
+ - - ">="
40
41
  - !ruby/object:Gem::Version
41
42
  version: 1.1.1
42
43
  - !ruby/object:Gem::Dependency
43
44
  name: rspec
44
45
  requirement: !ruby/object:Gem::Requirement
45
46
  requirements:
46
- - - ~>
47
+ - - "~>"
47
48
  - !ruby/object:Gem::Version
48
- version: '2.7'
49
+ version: '2.99'
49
50
  type: :development
50
51
  prerelease: false
51
52
  version_requirements: !ruby/object:Gem::Requirement
52
53
  requirements:
53
- - - ~>
54
+ - - "~>"
54
55
  - !ruby/object:Gem::Version
55
- version: '2.7'
56
+ version: '2.99'
56
57
  description: Using OAuth2 to authenticate wechat user when web resources being viewed
57
58
  within wechat(weixin) client.
58
59
  email:
59
60
  - askinnyworm@gmail.com
60
61
  - Never.Min@gmail.com
62
+ - eric@cloud-mes.com
61
63
  executables: []
62
64
  extensions: []
63
65
  extra_rdoc_files: []
@@ -66,29 +68,29 @@ files:
66
68
  - lib/omniauth-wechat-oauth2.rb
67
69
  - lib/omniauth/strategies/wechat.rb
68
70
  - lib/omniauth/strategies/wechat_qiye.rb
71
+ - lib/omniauth/wechat.rb
69
72
  homepage: https://github.com/nevermin/omniauth-wechat-oauth2
70
73
  licenses:
71
74
  - MIT
72
75
  metadata: {}
73
- post_install_message:
76
+ post_install_message:
74
77
  rdoc_options: []
75
78
  require_paths:
76
79
  - lib
77
80
  required_ruby_version: !ruby/object:Gem::Requirement
78
81
  requirements:
79
- - - '>='
82
+ - - ">="
80
83
  - !ruby/object:Gem::Version
81
- version: 2.0.0
84
+ version: 2.4.0
82
85
  required_rubygems_version: !ruby/object:Gem::Requirement
83
86
  requirements:
84
- - - '>='
87
+ - - ">="
85
88
  - !ruby/object:Gem::Version
86
89
  version: '0'
87
90
  requirements:
88
91
  - none
89
- rubyforge_project:
90
- rubygems_version: 2.7.9
91
- signing_key:
92
+ rubygems_version: 3.1.4
93
+ signing_key:
92
94
  specification_version: 4
93
95
  summary: Omniauth strategy for wechat(weixin)
94
96
  test_files: []