6w 作业,微信后台
任务要求
- 在之前开发基础上, 完成 极简交互式笔记的 微信后台 版本
需求如下:
- 将公网应用网站改写为公众号后台服务
可以通过公众号使用:
- 使用专用指令,可打印出过往所有笔记
- 一次接收手机端输入的文字(不包含表情/图片/声音/视频...)
- 在服务端合理保存
- 同时兼容的命令行工具远程交互/使用/管理
可以通过本地命令行工具监察/管理网站:
- 获得当前笔记数量/访问数量等等基础数据
- 可以获得所有笔记备份的归档下载
背景
- 开发系统:OS X 10.10
- python版本:2.7.10
- 框架: flask
- 服务器:pythonanywhere
- 微信公共帐号
这个任务差不多把5w的任务再加一个微信认证,再把1w任务整合用于判断,就差不多了
帐号认证的直接找到这篇文章 [Flask+SAE快速打造微信公众帐号] (http://blog.csdn.net/linhan8/article/details/8746110)
直接用里面的代码,就认证成功了。
@app.route('/wechat', methods = ['GET', 'POST'] )
def wechat_auth():
if request.method == 'GET':
token = "#######" #我微信的token
query = request.args
signature = query.get('signature', '')
timestamp = query.get('timestamp', '')
nonce = query.get('nonce', '')
echostr = query.get('echostr', '')
s = [timestamp, nonce, token]
s.sort()
s = ''.join(s)
if ( hashlib.sha1(s).hexdigest() == signature ):
return make_response(echostr)
微信的接口给开发者的是一堆xml格式的数据,用户发送数据给公共帐号,数据会以xml格式包装之后发送出去。所以我们只需要把xml的格式解析出来内容来就行
当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。
数据包的文本信息
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>1348831860</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[this is a test]]></Content>
<MsgId>1234567890123456</MsgId>
</xml>
用 xml.etree.ElementTree 模块来解析。
之前想到如何来获取这个POST body的信息,搜索到这个How can I get the whole request POST body in Python with Flask? 其实上面一个博客链接的就用request.data了,因为是flask框架。
xml_recv = ET.fromstring(request.data
) 这条来获取post形象。
接下来就只需把收到的信息处理就行了。
需要注意的,微信返回了给开发这的数据<ToUserName>
再前面后面是 <FromUserName>
,反回去这两个的位置需要换下。
.format(dict_data['FromUserName'],dict_data['ToUserName'],dict_data['Content'])
- 手机界面
- 二维码