发现原来那篇主题( http://v2ex.com/t/129474 )发布时间太久远了……提不上来了……重开一贴……
项目地址: https://github.com/doraemonext/wechat-python-sdk
文档地址: http://wechat-python-sdk.readthedocs.org/
做了一次比较大的更新,与上个版本比较:
这次更新兼容历史版本,可以无缝升级。
======== 我是分割线,下面是一点乱七八糟的东西 ========
然后做个预告,正在写另外一个微信公众号的开源平台( https://github.com/doraemonext/wechat-platform ),BSD许可证,主要面向群体是订阅号的运营者,支持多公众号。
对订阅号而言,深度集成各种模拟登陆功能,支持全部/随机/顺序/逆序回复规则里面的内容,支持混合回复语音/图片/文字/图文/音乐,支持插件扩展,自带人工识别腾讯验证码等等。目前后台基本完成,正在疯狂写管理后台的前端,发两张图 =.=
http://ww1.sinaimg.cn/large/c6b77a54gw1en3esah81ej21110q944d.jpg
http://ww4.sinaimg.cn/large/c6b77a54gw1en3esbfs6yj21110q9ae8.jpg
希望寒假之前能够搞定并发布第一个版本 >_<
======== 乱七八糟的东西结束,下面直接贴 wechat-python-sdk 的 README ========
非官方微信公众平台 Python 开发包,包括官方接口和非官方接口。
官方接口依据公众平台开发者文档编写,可以实现公众平台开发者文档中的所有内容,具体不列举,请查看 WechatBasic 文档;
非官方接口采用模拟登陆的方式,可以实现更多高级功能,但也存在相应风险。
目前提供的非官方接口功能有:
请注意:本开发包并不打算提供一个独立的完整微信解决方案,我们更希望这个开发包可以非常融洽的在各个框架中进行集成并使用,对于HTTP请求及响应方面并不涉及,该开发包仅仅接受必要参数,提供各种微信操作的方法,并返回相应的可以响应微信服务器的数据(Response)或操作执行结果。
1
abelyao 2014-12-09 15:23:58 +08:00
“主动对指定用户发送消息” 是不是需要48小时内用户有发东西给本号?或者是利用每月发送限制的次数发的?
|
2
doraemonext OP @abelyao 需要48小时内用户有发东西给本号,不是利用每月发送限制的次数发的。
这个功能的目的主要是为了当用户发送请求后,可以不用管微信的限制,直接通过这些方法主动发送任意多的文字、图片、语音、图文等给用户。 |
3
abelyao 2014-12-09 15:34:17 +08:00
恕我直言,总觉得以模拟登陆去实现的功能,很坑,如果哪天官网改变了,就会影响到嵌入这个 SDK 的业务,而除非 SDK 有时时进行更新,不然就又是一个坑。之前我们也利用模拟登录做了有几个小功能,后来觉得不妥,改变业务的方向,使用官方 API 进行操作了。
不过还是支持楼主,无论是坚持写一个 SDK 持续力,还是把 SDK 公开出来给别人参考学习使用,都得要你点个赞。 |
4
doraemonext OP @abelyao 谢谢 :-)
|
5
shuax 2014-12-09 21:09:24 +08:00
不知道用户分享公众号的时候有没有什么消息可以获取到这个事件。
|
6
doraemonext OP @shuax 不清楚诶 =.=
|
7
virusdefender 2014-12-09 21:49:51 +08:00
看了看很棒~~过段时间有空看看能不能帮忙~
|
8
doraemonext OP @virusdefender 谢谢啦~
|
9
14 2014-12-09 22:58:35 +08:00 via Android
谢谢楼主,上次用你的SDK重构了微信平台,微信的API文档没有楼主文档那么详细的权限说明,因为是个通用平台,但是我无法根据用户填的设置判断他是未认证还是已认证是订阅号还是服务号,我只能根据报错判断,不知道有没有什么好的实践= =
|
10
kxxoling 2014-12-09 23:11:27 +08:00
赞!已 star。
|
11
doraemonext OP |
12
doraemonext OP @kxxoling 谢谢 :-)
|
13
14 2014-12-09 23:16:02 +08:00 via Android
@doraemonext 用户最不靠谱了。。。
|
14
14 2014-12-09 23:20:03 +08:00 via Android
@doraemonext 对,可是对于未认证的订阅号,似乎没有任何自动化的方法,它能够调用的只有被动发消息接口。。。
|
15
doraemonext OP @14 可能也会有用户想把认证服务号当普通订阅号来用的吧(逃
未认证订阅号在调用WechatBasic的get_menu()获取自定义菜单时会抛出OfficialAPIError 认证订阅号或未认证服务号在调用WechatBasic的get_groups()获取用户分组时会抛出OfficialAPIError 先试get_groups(),如果成功就是认证服务号,如果抛出异常,再试get_menu(),如果成功就是认证订阅号或未认证服务号,否则就是未认证订阅号。 上面这两个方法都是只读的,属于无关痛痒的调用 =。= |
16
doraemonext OP @14 对于没有权限的调用,wechat-python-sdk会直接抛出对应异常,直接捕获就可以了,具体异常信息参考: http://wechat-python-sdk.readthedocs.org/zh_CN/master/exceptions.html
|
17
14 2014-12-09 23:47:00 +08:00
@doraemonext 谢,这样对于未认证的订阅号,还是无法区分有没有填错。然后发现去验证没有太大意义,万一中途用户又去认证了,还是按照正常逻辑捕获异常吧。说起异常,刚开始眼花没分清NeedParamError和NeedParseError导致误入歧途= =
|
18
doraemonext OP @14 其实可以根据异常的信息来区分的,刚才做了一下实验,下面是实验结果:
无论公众号是什么类型,如果appid或appsecret输入错误,抛出的OfficialAccount异常内容为字符串"40001: invalid credential" 对于未认证订阅号,不管是调用get_menu()还是get_groups()都会抛出OfficialAccount异常,异常内容为字符串"50001: user unauthorized" 对于已认证订阅号或未认证服务号,调用get_groups()会抛出OfficialAccount异常,异常内容为字符串"48001: api unauthorized" 对于认证服务号,什么异常都不会抛出 |
19
doraemonext OP @14 上面的异常名字全都写错了。。还改不了。。。全都是OfficialAPIError。。。
|
20
blue7wings 2014-12-10 09:27:20 +08:00
支持,支持。。。
|
21
doraemonext OP @14 感觉可以根据这个再增加一个判断用户公众号类型的方法 =。=
|
22
ddkangfu 2014-12-14 22:02:54 +08:00 1
已经fork代码,加油啊楼主~~~
|
23
doraemonext OP @ddkangfu 谢谢 :-)
|
24
icewent 2014-12-17 22:48:42 +08:00
赞!
|
25
14 2014-12-21 14:18:21 +08:00
@doraemonext 未认证的订阅号只有原始ID和Token,连AppID都没有,这个怎么处理。。。
|