wechat 0.8.0 → 0.8.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +11 -0
- data/lib/action_controller/wechat_responder.rb +6 -6
- data/lib/wechat/api_loader.rb +1 -0
- data/lib/wechat/controller_api.rb +15 -6
- data/lib/wechat.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae9351f61a2b192bcb892dcdf95f85a540738b5a
|
4
|
+
data.tar.gz: 6d2b9e4c9ebb1e68195abe00ccec070f991f8b92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e8ccc4da8e5fec561612d22f3c2c7890d8447bd401e5c78541bf984378ecf2cc32473bc3d3b65a7dce7532b1872a0044b81ec9d54160f3f3552651476deb519
|
7
|
+
data.tar.gz: fe059c2d7670b4fdf92c18386adc4158fd4c8c8d6fabfb0844a20954d5dc6a38470a0796adc8e990413ee29ff757cd594b2060bf87aeab079b047384355df823
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v0.8.2 (released at 11/2/2016)
|
4
|
+
|
5
|
+
# Bug which if not using multi-account but using web login.
|
6
|
+
|
7
|
+
## v0.8.1 (released at 11/2/2016)
|
8
|
+
|
9
|
+
* After allow sub controller using wechat_api, it's possible not initialise at first time. by @IvanChou #155
|
10
|
+
* Support web application login scope snsapi_login.
|
11
|
+
* Add unionid support for public account.
|
12
|
+
* Remove OpenId in Enterprise OAuth2 as it's not supported by Tecent.
|
13
|
+
|
3
14
|
## v0.8.0 (released at 10/24/2016)
|
4
15
|
|
5
16
|
* Complete support multi-wechat public account. by @xiewenwei #150
|
@@ -2,23 +2,23 @@ module ActionController
|
|
2
2
|
module WechatResponder
|
3
3
|
def wechat_api(opts = {})
|
4
4
|
include Wechat::ControllerApi
|
5
|
-
self.
|
5
|
+
self.wechat_cfg_account = opts[:account].present? ? opts[:account].to_sym : :default
|
6
|
+
self.wechat_api_client = load_controller_wechat(wechat_cfg_account, opts)
|
6
7
|
end
|
7
8
|
|
8
9
|
def wechat_responder(opts = {})
|
9
10
|
include Wechat::Responder
|
10
|
-
self.
|
11
|
+
self.wechat_cfg_account = opts[:account].present? ? opts[:account].to_sym : :default
|
12
|
+
self.wechat_api_client = load_controller_wechat(wechat_cfg_account, opts)
|
11
13
|
end
|
12
14
|
|
13
15
|
def wechat
|
14
|
-
self.wechat_api_client ||= load_controller_wechat
|
16
|
+
self.wechat_api_client ||= load_controller_wechat(wechat_cfg_account)
|
15
17
|
end
|
16
18
|
|
17
19
|
private
|
18
20
|
|
19
|
-
def load_controller_wechat(opts = {})
|
20
|
-
account = opts[:account].present? ? opts[:account].to_sym : :default
|
21
|
-
|
21
|
+
def load_controller_wechat(account, opts = {})
|
22
22
|
self.token = opts[:token] || Wechat.config(account).token
|
23
23
|
self.appid = opts[:appid] || Wechat.config(account).appid
|
24
24
|
self.corpid = opts[:corpid] || Wechat.config(account).corpid
|
data/lib/wechat/api_loader.rb
CHANGED
@@ -3,7 +3,7 @@ module Wechat
|
|
3
3
|
extend ActiveSupport::Concern
|
4
4
|
|
5
5
|
module ClassMethods
|
6
|
-
attr_accessor :wechat_api_client, :token, :appid, :corpid, :agentid, :encrypt_mode, :timeout,
|
6
|
+
attr_accessor :wechat_api_client, :wechat_cfg_account, :token, :appid, :corpid, :agentid, :encrypt_mode, :timeout,
|
7
7
|
:skip_verify_ssl, :encoding_aes_key, :trusted_domain_fullname, :oauth2_cookie_duration
|
8
8
|
end
|
9
9
|
|
@@ -13,13 +13,22 @@ module Wechat
|
|
13
13
|
|
14
14
|
def wechat_oauth2(scope = 'snsapi_base', page_url = nil, &block)
|
15
15
|
appid = self.class.corpid || self.class.appid
|
16
|
+
if appid.blank?
|
17
|
+
self.class.wechat # to initialize wechat_api_client at first time call wechat_oauth2
|
18
|
+
appid = self.class.corpid || self.class.appid
|
19
|
+
raise 'Can not get corpid or appid, so please configure it first to using wechat_oauth2' if appid.blank?
|
20
|
+
end
|
16
21
|
page_url ||= if self.class.trusted_domain_fullname
|
17
22
|
"#{self.class.trusted_domain_fullname}#{request.original_fullpath}"
|
18
23
|
else
|
19
24
|
request.original_url
|
20
25
|
end
|
21
26
|
redirect_uri = CGI.escape(page_url)
|
22
|
-
|
27
|
+
if scope == 'snsapi_login'
|
28
|
+
oauth2_url = "https://open.weixin.qq.com/connect/qrconnect?appid=#{appid}&redirect_uri=#{redirect_uri}&response_type=code&scope=#{scope}&state=#{wechat.jsapi_ticket.oauth2_state}#wechat_redirect"
|
29
|
+
else
|
30
|
+
oauth2_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{appid}&redirect_uri=#{redirect_uri}&response_type=code&scope=#{scope}&state=#{wechat.jsapi_ticket.oauth2_state}#wechat_redirect"
|
31
|
+
end
|
23
32
|
|
24
33
|
return oauth2_url unless block_given?
|
25
34
|
if self.class.corpid
|
@@ -39,9 +48,11 @@ module Wechat
|
|
39
48
|
params[:state].to_s == wechat.jsapi_ticket.oauth2_state.to_s # params[:state] maybe '' and wechat.jsapi_ticket.oauth2_state may be nil
|
40
49
|
access_info = wechat.web_access_token(params[:code])
|
41
50
|
cookies.signed_or_encrypted[:we_openid] = { value: access_info['openid'], expires: self.class.oauth2_cookie_duration.from_now }
|
51
|
+
cookies.signed_or_encrypted[:we_unionid] = { value: access_info['unionid'], expires: self.class.oauth2_cookie_duration.from_now }
|
42
52
|
yield access_info['openid'], access_info
|
43
53
|
else
|
44
|
-
yield cookies.signed_or_encrypted[:we_openid], { 'openid' => cookies.signed_or_encrypted[:we_openid]
|
54
|
+
yield cookies.signed_or_encrypted[:we_openid], { 'openid' => cookies.signed_or_encrypted[:we_openid],
|
55
|
+
'unionid' => cookies.signed_or_encrypted[:we_unionid] }
|
45
56
|
end
|
46
57
|
end
|
47
58
|
|
@@ -52,12 +63,10 @@ module Wechat
|
|
52
63
|
userinfo = wechat.getuserinfo(params[:code])
|
53
64
|
cookies.signed_or_encrypted[:we_userid] = { value: userinfo['UserId'], expires: self.class.oauth2_cookie_duration.from_now }
|
54
65
|
cookies.signed_or_encrypted[:we_deviceid] = { value: userinfo['DeviceId'], expires: self.class.oauth2_cookie_duration.from_now }
|
55
|
-
cookies.signed_or_encrypted[:we_openid] = { value: userinfo['OpenId'], expires: self.class.oauth2_cookie_duration.from_now }
|
56
66
|
yield userinfo['UserId'], userinfo
|
57
67
|
else
|
58
68
|
yield cookies.signed_or_encrypted[:we_userid], { 'UserId' => cookies.signed_or_encrypted[:we_userid],
|
59
|
-
'DeviceId' => cookies.signed_or_encrypted[:we_deviceid]
|
60
|
-
'OpenId' => cookies.signed_or_encrypted[:we_openid] }
|
69
|
+
'DeviceId' => cookies.signed_or_encrypted[:we_deviceid] }
|
61
70
|
end
|
62
71
|
end
|
63
72
|
end
|
data/lib/wechat.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wechat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Skinnyworm
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
R5k6Ma92sW8jupX4cqbSu9rntdVQkNRpoHIrfU0MZT0cKsg/D1zMteylxrO3KMsz
|
32
32
|
SPQRv+nrI1J0zevFqb8010heoR8SDyUA0Mm3+Q==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date: 2016-
|
34
|
+
date: 2016-11-02 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activesupport
|
@@ -206,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
206
|
version: '0'
|
207
207
|
requirements: []
|
208
208
|
rubyforge_project:
|
209
|
-
rubygems_version: 2.6.
|
209
|
+
rubygems_version: 2.6.8
|
210
210
|
signing_key:
|
211
211
|
specification_version: 4
|
212
212
|
summary: DSL for wechat message handling and API
|
metadata.gz.sig
CHANGED
Binary file
|