omniauth-wechat-oauth2 0.1.0 → 0.1.1

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: 8ce6f400f236ade461b6de6f0475e29d6efa2663
4
- data.tar.gz: 7406fddc873587f98f976085265bccee6c450d4c
2
+ SHA256:
3
+ metadata.gz: 90919b05aecd6b3de0d6d41e1c0e18bac5abbc10d70a2d59c406a4acc139cb99
4
+ data.tar.gz: 70f0b3689eabd805a81e15c4ecc7ea80e68c2f1dfde663472d8f74807b9aa5df
5
5
  SHA512:
6
- metadata.gz: 324edff8a03b06a2eec788c5a612efef7ca2099be123fe721f6d77995a94a59f9a35e2adc5a52599d21cd1a00d880a5e7522155d1fa447e0cdecd67c91f3645e
7
- data.tar.gz: a2cdacfde5eb3c2f0d87a7a5f30bde685315d242f6dbc5c9247a43a42502b60996b2d7702adb4031f9f8f62fc4564181afa391977a46a31b38479f8004bb6dea
6
+ metadata.gz: ec12ab658d9e4a71ad8d7fee8af7e2a14d6884fb13fa92f70004becd5598bbffdc6a668b21089ef74d9e7a7c39e9138f2754f43eac7d67b5fadd8c3e133feef8
7
+ data.tar.gz: 940c92c6ea780000f4b0a3cc1c207cee2828f2c7ae635825ae0e63a9ed1d32869de39fd75dfed0bef60f49675a95ec6900ca3e7ae0b8da8d902f62b19ae26f34
data/README.md CHANGED
@@ -1,11 +1,20 @@
1
1
  Omniauth-wechat-oauth2
2
2
  ======================
3
3
 
4
- Wechat OAuth2 Strategy for OmniAuth 1.0.
4
+ [![Gem Version](https://img.shields.io/gem/v/omniauth-wechat-oauth2.svg)][gem]
5
+ [![Security Check](https://hakiri.io/github/NeverMin/omniauth-wechat-oauth2/master.svg)][security]
6
+ [![Build Status](https://travis-ci.org/NeverMin/omniauth-wechat-oauth2.svg)][travis]
5
7
 
6
- You need to get a wechat API key at: http://mp.weixin.qq.com
8
+ [gem]: https://rubygems.org/gems/omniauth-weibo-oauth2
9
+ [security]: https://hakiri.io/github/NeverMin/omniauth-wechat-oauth2/master
10
+ [travis]: https://travis-ci.org/NeverMin/omniauth-wechat-oauth2
7
11
 
8
- Wechat oauth2 specification can be found at: http://mp.weixin.qq.com/wiki/index.php?title=网页授权获取用户基本信息
12
+
13
+ Wechat OAuth2 Strategy for OmniAuth 1.0.
14
+
15
+ You need to get a wechat API key at: https://mp.weixin.qq.com
16
+
17
+ Wechat oauth2 specification can be found at: https://mp.weixin.qq.com/wiki/index.php?title=网页授权获取用户基本信息
9
18
 
10
19
  ## Installation
11
20
 
@@ -1 +1,2 @@
1
1
  require "omniauth/strategies/wechat"
2
+ require "omniauth/strategies/wechat_qiye"
@@ -46,9 +46,12 @@ module OmniAuth
46
46
  @raw_info ||= begin
47
47
  access_token.options[:mode] = :query
48
48
  if access_token["scope"] == "snsapi_userinfo"
49
- @raw_info = access_token.get("/sns/userinfo", :params => {"openid" => @uid}, parse: :json).parsed
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]+/, ''))
50
51
  else
51
52
  @raw_info = {"openid" => @uid }
53
+ @raw_info.merge!("unionid" => access_token["unionid"]) if access_token["unionid"]
54
+ @raw_info
52
55
  end
53
56
  end
54
57
  end
@@ -0,0 +1,80 @@
1
+ require "omniauth-oauth2"
2
+
3
+ module OmniAuth
4
+ module Strategies
5
+ class WechatQiye < OmniAuth::Strategies::OAuth2
6
+ option :name, "wechat_qiye"
7
+
8
+ option :client_options, {
9
+ :site => "https://qyapi.weixin.qq.com",
10
+ authorize_url: "https://open.weixin.qq.com/connect/oauth2/authorize#wechat_redirect",
11
+ token_url: "/cgi-bin/gettoken",
12
+ token_method: :get,
13
+ connection_opts: {
14
+ ssl: { verify: false }
15
+ }
16
+ }
17
+
18
+ option :authorize_params, {scope: "snsapi_userinfo"}
19
+ option :token_params, {parse: :json}
20
+
21
+ uid do
22
+ raw_info['userid']
23
+ end
24
+
25
+ info do
26
+ {
27
+ userid: raw_info['userid'],
28
+ name: raw_info['name'],
29
+ department: raw_info['department'],
30
+ gender: raw_info['gender'],
31
+ weixinid: raw_info['weixinid'],
32
+ avatar: raw_info['avatar'],
33
+ status: raw_info['status'],
34
+ extattr: raw_info['extattr']
35
+ }
36
+ end
37
+
38
+ extra do
39
+ { raw_info: raw_info }
40
+ end
41
+
42
+ def request_phase
43
+ params = client.auth_code.authorize_params.merge(redirect_uri: callback_url).merge(authorize_params)
44
+ params["appid"] = params.delete("client_id")
45
+ redirect client.authorize_url(params)
46
+ end
47
+
48
+ def raw_info
49
+ # step 2: get userid via code and access_token
50
+ @code ||= access_token[:code]
51
+
52
+ # step 3: get user info via userid
53
+ @uid ||= begin
54
+ access_token.options[:mode] = :query
55
+ response = access_token.get('/cgi-bin/user/getuserinfo', :params => {'code' => @code}, parse: :json)
56
+ response.parsed['UserId']
57
+ end
58
+
59
+ @raw_info ||= begin
60
+ access_token.options[:mode] = :query
61
+ response = access_token.get("/cgi-bin/user/get", :params => {"userid" => @uid}, parse: :json)
62
+ response.parsed
63
+ end
64
+ end
65
+
66
+ protected
67
+ def build_access_token
68
+ # step 0: wechat respond code
69
+ code = request.params['code']
70
+
71
+ # step 1: get access token
72
+ params = {
73
+ 'corpid' => client.id,
74
+ 'corpsecret' => client.secret,
75
+ }.merge(token_params.to_hash(symbolize_keys: true))
76
+ client.get_token(params, deep_symbolize(options.auth_token_params.merge({code: code})))
77
+ end
78
+ end
79
+ end
80
+ end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omniauth-wechat-oauth2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Skinnyworm
8
+ - Never Min
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-03-27 00:00:00.000000000 Z
12
+ date: 2019-03-15 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: omniauth
@@ -16,28 +17,28 @@ dependencies:
16
17
  requirements:
17
18
  - - ~>
18
19
  - !ruby/object:Gem::Version
19
- version: '1.0'
20
+ version: 1.3.2
20
21
  type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
25
  - - ~>
25
26
  - !ruby/object:Gem::Version
26
- version: '1.0'
27
+ version: 1.3.2
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: omniauth-oauth2
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
32
  - - ~>
32
33
  - !ruby/object:Gem::Version
33
- version: '1.0'
34
+ version: 1.1.1
34
35
  type: :runtime
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
39
  - - ~>
39
40
  - !ruby/object:Gem::Version
40
- version: '1.0'
41
+ version: 1.1.1
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: rspec
43
44
  requirement: !ruby/object:Gem::Requirement
@@ -54,7 +55,9 @@ dependencies:
54
55
  version: '2.7'
55
56
  description: Using OAuth2 to authenticate wechat user when web resources being viewed
56
57
  within wechat(weixin) client.
57
- email: askinnyworm@gmail.com
58
+ email:
59
+ - askinnyworm@gmail.com
60
+ - Never.Min@gmail.com
58
61
  executables: []
59
62
  extensions: []
60
63
  extra_rdoc_files: []
@@ -62,8 +65,10 @@ files:
62
65
  - README.md
63
66
  - lib/omniauth-wechat-oauth2.rb
64
67
  - lib/omniauth/strategies/wechat.rb
65
- homepage: https://github.com/skinnyworm/omniauth-wechat-oauth2
66
- licenses: []
68
+ - lib/omniauth/strategies/wechat_qiye.rb
69
+ homepage: https://github.com/nevermin/omniauth-wechat-oauth2
70
+ licenses:
71
+ - MIT
67
72
  metadata: {}
68
73
  post_install_message:
69
74
  rdoc_options: []
@@ -73,16 +78,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
73
78
  requirements:
74
79
  - - '>='
75
80
  - !ruby/object:Gem::Version
76
- version: 1.9.3
81
+ version: 2.0.0
77
82
  required_rubygems_version: !ruby/object:Gem::Requirement
78
83
  requirements:
79
84
  - - '>='
80
85
  - !ruby/object:Gem::Version
81
- version: 1.8.23
86
+ version: '0'
82
87
  requirements:
83
88
  - none
84
89
  rubyforge_project:
85
- rubygems_version: 2.2.1
90
+ rubygems_version: 2.7.9
86
91
  signing_key:
87
92
  specification_version: 4
88
93
  summary: Omniauth strategy for wechat(weixin)