一些文档
Flask 文档 http://dormousehole.readthedocs.org/en/latest/
微信公众平台接入说明 http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html
新浪SAE部署Flask 说明 http://www.sinacloud.com/doc/sae/python/tutorial.html#shi-yong-web-kai-fa-kuang-jia
微信公众平台测试账号申请 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
一、创建新的SAE应用
创建新的SAE应用,代码管理可以选择SVN,或者Git,我选择的SVN,客户端使用TortoiseSVN,这样可以在本地修改文件后提交即可,当然也可以使用SAE的在线编辑器。然后创建一个代码版本。
二、代码修改
在应用中创建一个myapp.py的python文件,可以直接在SAE的在线编辑器中创建,也可以用SVN check到本地后,创建后提交,现在整个应用一共有config.yaml、index.wsgi、myapp.py 这3个文件,暂时需要修改的是index.wsgi和myapp.py这两个,index.wsgi是整个应用的入口,参考SAE部署Flask的说明进行修改即可。
index.wsgi
import sae
from myapp import app
application = sae.create_wsgi_app(app)
myapp.py
from flask import Flask, request, make_response
from hashlib import sha1
app = Flask(__name__)
@app.route('/')
def index():
return "Hello,World!"
@app.route('/check', methods=['GET', 'POST'])
def check():
if request.method == 'GET':
token = r'test' # 这个根据自己的设置自行修改
signature = request.args.get('signature', '')
echostr = request.args.get('echostr', '')
timestamp = request.args.get('timestamp', '')
nonce = request.args.get('nonce', '')
tmp = [timestamp, nonce, token]
tmp.sort()
tmp = ''.join(tmp)
if signature == sha1(tmp).hexdigest():
return make_response(echostr)
else:
return "Access denied."
if __name__ == '__main__':
app.run()
这段代码是根据微信公众平台接入说明写的,官方示例只有PHP的,这里是Python Flask版本的。(如果代码直接复制报错的话把注释删了再试一下)
获取请求参数的方法在Flask的文档当中可以找到。
三、配置微信公众平台
登录微信公众平台http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 登录后的界面如图:
打开之前建好的SAE应用的代码管理界面,找到下面的链接。
先把这个链接复制到微信公众号设置的URL一栏,然后根据自己Flask程序设置的路由进行修改,我的后面要加上 /check
Token设置与程序当中的要一致。点击提交能够提示配置成功即可。这里基本的配置已经完成,剩下的部分就是不断完善程序的功能了。