weixin_authorize 1.6.2 → 1.6.3
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
- data/README.md +21 -0
- data/lib/weixin_authorize/api.rb +3 -9
- data/lib/weixin_authorize/api/mass.rb +2 -2
- data/lib/weixin_authorize/api/qrcode.rb +23 -10
- data/lib/weixin_authorize/config.rb +2 -0
- data/lib/weixin_authorize/version.rb +1 -1
- data/spec/api/mass_spec.rb +5 -0
- data/spec/api/qrcode_spec.rb +2 -2
- data/spec/api/template_spec.rb +40 -0
- data/spec/spec_helper.rb +1 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a664fbdb47c8a23894a9fe8274f279e332b13152
|
4
|
+
data.tar.gz: b574af19ee28f8c01445b2ea886bcb727b4772f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0062efdc2953202e3c42f3375421f00d81fee3586762cc1f231247daa7e1466adc7aa98f9511379d48a7b5a68cb3a535e5554bf723b58617ce24d13f6b7b52a2
|
7
|
+
data.tar.gz: 7060bc6ca0a181667f2be177b3b1ff750a566eb86c7adedf73d0dc572d47afe23a24ccc5875e619e32e8266808db21e58d911b00e2675260e404307b8ad5df27
|
data/README.md
CHANGED
@@ -11,6 +11,21 @@ Support using [Redis](http://redis.io) to store `access_token`
|
|
11
11
|
|
12
12
|
[Getting-Started](https://github.com/lanrion/weixin_authorize/wiki/Getting-Started)
|
13
13
|
|
14
|
+
[JS SDK](https://github.com/lanrion/weixin_authorize/wiki/js-sdk)
|
15
|
+
|
16
|
+
## 已经完成API
|
17
|
+
|
18
|
+
* 客服消息
|
19
|
+
* 模板消息
|
20
|
+
* 用户分组管理
|
21
|
+
* 用户信息管理
|
22
|
+
* Oauth 2授权
|
23
|
+
* 二维码生成
|
24
|
+
* 自定义菜单
|
25
|
+
* 群发消息
|
26
|
+
* 多媒体管理
|
27
|
+
* JS SDK(ticket支持缓存)
|
28
|
+
|
14
29
|
## V2.0开发中:
|
15
30
|
https://github.com/lanrion/weixin_authorize/milestones/v2.0-dev
|
16
31
|
|
@@ -44,3 +59,9 @@ then run `rspec .`
|
|
44
59
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
45
60
|
4. Push to the branch (`git push origin my-new-feature`)
|
46
61
|
5. Create new Pull Request
|
62
|
+
|
63
|
+
## 捐赠支持
|
64
|
+
|
65
|
+
如果你觉得我的gem对你有帮助,欢迎打赏支持,:smile:
|
66
|
+
|
67
|
+

|
data/lib/weixin_authorize/api.rb
CHANGED
@@ -1,9 +1,3 @@
|
|
1
|
-
|
2
|
-
require
|
3
|
-
|
4
|
-
require "weixin_authorize/api/groups"
|
5
|
-
require "weixin_authorize/api/qrcode"
|
6
|
-
require "weixin_authorize/api/media"
|
7
|
-
require "weixin_authorize/api/mass"
|
8
|
-
require "weixin_authorize/api/oauth"
|
9
|
-
require "weixin_authorize/api/template"
|
1
|
+
Dir["#{File.dirname(__FILE__)}/api/*.rb"].each do |path|
|
2
|
+
require path
|
3
|
+
end
|
@@ -7,8 +7,8 @@ module WeixinAuthorize
|
|
7
7
|
|
8
8
|
# media_info= {"media_id" media_id}
|
9
9
|
# https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN
|
10
|
-
def mass_with_group(group_id, media_info, msgtype="mpnews")
|
11
|
-
group_option = {"filter" => {"group_id" => group_id.to_s}}
|
10
|
+
def mass_with_group(group_id, media_info, msgtype="mpnews", is_to_all=false)
|
11
|
+
group_option = {"filter" => {"group_id" => group_id.to_s, "is_to_all" => is_to_all}}
|
12
12
|
media = generate_media(msgtype, media_info, group_option)
|
13
13
|
|
14
14
|
mass_url = "#{mass_base_url}/sendall"
|
@@ -6,20 +6,30 @@ module WeixinAuthorize
|
|
6
6
|
|
7
7
|
# 临时二维码
|
8
8
|
def create_qr_scene(scene_id, expire_seconds=1800)
|
9
|
-
post_url = "#{qrcode_base_url}/create"
|
10
9
|
qrcode_infos = {action_name: "QR_SCENE", expire_seconds: expire_seconds}
|
11
|
-
qrcode_infos
|
12
|
-
http_post(
|
10
|
+
qrcode_infos.merge!(action_info(scene_id))
|
11
|
+
http_post(qrcode_base_url, qrcode_infos)
|
13
12
|
end
|
14
13
|
|
15
14
|
# 永久二维码
|
16
|
-
|
17
|
-
|
15
|
+
# options: scene_id, scene_str
|
16
|
+
def create_qr_limit_scene(options)
|
17
|
+
scene_id = options[:scene_id]
|
18
18
|
qrcode_infos = {action_name: "QR_LIMIT_SCENE"}
|
19
|
-
qrcode_infos
|
20
|
-
http_post(
|
19
|
+
qrcode_infos.merge!(action_info(scene_id))
|
20
|
+
http_post(qrcode_base_url, qrcode_infos)
|
21
21
|
end
|
22
22
|
|
23
|
+
# 为永久的字符串参数值
|
24
|
+
# options: scene_str
|
25
|
+
def create_qr_limit_str_scene(options)
|
26
|
+
scene_str = options[:scene_str]
|
27
|
+
qrcode_infos = {action_name: "QR_LIMIT_STR_SCENE"}
|
28
|
+
qrcode_infos.merge!(action_info(nil, scene_str))
|
29
|
+
http_post(qrcode_base_url, qrcode_infos)
|
30
|
+
end
|
31
|
+
|
32
|
+
|
23
33
|
# 通过ticket换取二维码, 直接访问即可显示!
|
24
34
|
def qr_code_url(ticket)
|
25
35
|
WeixinAuthorize.mp_endpoint("/showqrcode?ticket=#{ticket}")
|
@@ -28,11 +38,14 @@ module WeixinAuthorize
|
|
28
38
|
private
|
29
39
|
|
30
40
|
def qrcode_base_url
|
31
|
-
"/qrcode"
|
41
|
+
"/qrcode/create"
|
32
42
|
end
|
33
43
|
|
34
|
-
def action_info(scene_id)
|
35
|
-
|
44
|
+
def action_info(scene_id, scene_str=nil)
|
45
|
+
scene_info = {}
|
46
|
+
scene_info[:scene_id] = scene_id if !scene_id.nil?
|
47
|
+
scene_info[:scene_str] = scene_str if !scene_str.nil?
|
48
|
+
{action_info: {scene: scene_info}}
|
36
49
|
end
|
37
50
|
|
38
51
|
end
|
@@ -15,6 +15,8 @@ module WeixinAuthorize
|
|
15
15
|
|
16
16
|
# 可选配置: RestClient timeout, etc.
|
17
17
|
# key 必须是符号
|
18
|
+
# 如果出现 RestClient::SSLCertificateNotVerified Exception: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
|
19
|
+
# 这个错,除了改 verify_ssl: true,请参考:http://www.extendi.it/blog/2015/5/23/47-sslv3-read-server-certificate-b-certificate-verify-failed
|
18
20
|
def rest_client_options
|
19
21
|
if config.nil?
|
20
22
|
return {timeout: 5, open_timeout: 5, verify_ssl: true}
|
data/spec/api/mass_spec.rb
CHANGED
@@ -49,6 +49,11 @@ describe WeixinAuthorize::Api::Mass do
|
|
49
49
|
expect(response.code).to eq(WeixinAuthorize::OK_CODE)
|
50
50
|
end
|
51
51
|
|
52
|
+
it "#mass_with_groug send to all" do
|
53
|
+
response = $client.mass_with_group("1", "mass_group_text_to_all", "text", true)
|
54
|
+
expect(response.code).to eq(WeixinAuthorize::OK_CODE)
|
55
|
+
end
|
56
|
+
|
52
57
|
it "#mass_with_openids with mpnews and can delete message" do
|
53
58
|
response = $client.mass_with_openids([ENV["OPENID"]], mass_media_id)
|
54
59
|
expect(response.code).to eq(WeixinAuthorize::OK_CODE)
|
data/spec/api/qrcode_spec.rb
CHANGED
@@ -8,13 +8,13 @@ describe WeixinAuthorize::Api::Qrcode do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
it "#create_qr_limit_scene" do
|
11
|
-
response = $client.create_qr_limit_scene(
|
11
|
+
response = $client.create_qr_limit_scene(scene_id: 1234, scene_str: "wechat")
|
12
12
|
expect(response.code).to eq(WeixinAuthorize::OK_CODE)
|
13
13
|
expect(response.result.keys).to eq(["ticket", "url"])
|
14
14
|
end
|
15
15
|
|
16
16
|
it "#return_qr_url" do
|
17
|
-
response = $client.create_qr_limit_scene(
|
17
|
+
response = $client.create_qr_limit_scene(scene_id: 1234, scene_str: "wechat")
|
18
18
|
qr_url = $client.qr_code_url(response.result["ticket"])
|
19
19
|
expect(response.code).to eq(WeixinAuthorize::OK_CODE)
|
20
20
|
expect(qr_url).to match(/(\S+\.(com|net|org|edu|gov)(\/\S+)?)/)
|
@@ -0,0 +1,40 @@
|
|
1
|
+
describe WeixinAuthorize::Api::Template do
|
2
|
+
# {{first.DATA}}
|
3
|
+
# 项目名称:{{class.DATA}}
|
4
|
+
# 时间:{{time.DATA}}
|
5
|
+
# 地点:{{add.DATA}}
|
6
|
+
# {{remark.DATA}}
|
7
|
+
it "can send template msg" do
|
8
|
+
url = "http://www.baidu.com"
|
9
|
+
data = {
|
10
|
+
first: {
|
11
|
+
value: "报名结果通知",
|
12
|
+
color: "#173277"
|
13
|
+
},
|
14
|
+
class: {
|
15
|
+
value: "领导与管理课程培训/人格测评",
|
16
|
+
color: "#173177"
|
17
|
+
},
|
18
|
+
time: {
|
19
|
+
value: "11月6日—11月7日(周三—周五)",
|
20
|
+
color: "#274177"
|
21
|
+
},
|
22
|
+
add: {
|
23
|
+
value: "F302室",
|
24
|
+
color: "#274377"
|
25
|
+
},
|
26
|
+
remark: {
|
27
|
+
value: "您可点击【详情】查看详细信息。",
|
28
|
+
color: "#274377"
|
29
|
+
}
|
30
|
+
}
|
31
|
+
msg_result = $client.send_template_msg(
|
32
|
+
ENV["OPENID"],
|
33
|
+
ENV["TEMPLATE_ID"],
|
34
|
+
url,
|
35
|
+
"#173177",
|
36
|
+
data
|
37
|
+
)
|
38
|
+
expect(msg_result.code).to eq(WeixinAuthorize::OK_CODE)
|
39
|
+
end
|
40
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -41,6 +41,7 @@ CodeClimate::TestReporter.start
|
|
41
41
|
ENV["APPID"]="wx986f04063d341d04"
|
42
42
|
ENV["APPSECRET"]="1a941cd88cb4579ba98ec06b6813af03"
|
43
43
|
ENV["OPENID"]="o9k6BuB0kydAcPTc7sPxppB1GQqA"
|
44
|
+
ENV["TEMPLATE_ID"]="-8ooXrOK3VD3HuSS8--nH154PO9Lw2E7T-RV1uTaGLc"
|
44
45
|
|
45
46
|
# Comment to test for ClientStorage
|
46
47
|
redis = Redis.new(host: "127.0.0.1", port: "6379", db: 15)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: weixin_authorize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- lanrion
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -159,6 +159,7 @@ files:
|
|
159
159
|
- spec/api/medias/ruby-logo.jpg
|
160
160
|
- spec/api/menu_spec.rb
|
161
161
|
- spec/api/qrcode_spec.rb
|
162
|
+
- spec/api/template_spec.rb
|
162
163
|
- spec/api/user_spec.rb
|
163
164
|
- spec/spec_helper.rb
|
164
165
|
- weixin_authorize.gemspec
|
@@ -182,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
182
183
|
version: '0'
|
183
184
|
requirements: []
|
184
185
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.
|
186
|
+
rubygems_version: 2.2.2
|
186
187
|
signing_key:
|
187
188
|
specification_version: 4
|
188
189
|
summary: weixin api authorize access_token
|
@@ -197,5 +198,6 @@ test_files:
|
|
197
198
|
- spec/api/medias/ruby-logo.jpg
|
198
199
|
- spec/api/menu_spec.rb
|
199
200
|
- spec/api/qrcode_spec.rb
|
201
|
+
- spec/api/template_spec.rb
|
200
202
|
- spec/api/user_spec.rb
|
201
203
|
- spec/spec_helper.rb
|