原理:在微信公众号后台,调用flask写的服务。
新浪SAE中,申请云应用SAE,python,标准环境,代码管理:SVN()。
代码管理—创建版本,我创建的是版本号为1的版本,所以链接为:http://1.cdedunews.applinzi.com
,右侧有编辑代码,点开,里面有两个文件:config.yaml,index.wsgi.
新浪SAE的参考:http://www.sinacloud.com/doc/sae/python/index.html
同时,微信公众平台—开发—基本配置:URL:http://1.cdedunews.applinzi.com,Token(前后一致就可以了):cdedunews,EncodingAESKey(我用随机生成的):asxTH0ixv0aBsoCLCfdqfNkmWDipJqsBSms9grKVcyP。消息加密方式,因为是学习,所以明文即可。
【每个文件开始最好加上:# encoding=utf-8 注释可用中文】
在index.wsgi中的代码:
importsae
from myappimport app
application = sae.create_wsgi_app(app)
index.wsgi是程序入口,也就是主程序调用myapp.py.
myapp.py代码:
fromflask importFlask,request, make_response
from hashlibimport sha1
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
@app.route('/微信', methods=['GET','POST'])
def check():
if request.method=='GET':
token = r'cdedunews' #这里的cdedunews就是微信里的token
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 "Accessdenied."
if __name__ =='__main__':
app.run()
配置成功(http://debug.fangbei.org/用微信调试器进行token验证成功,而且可以使用相应的主页获得相应信息),只要这里过了,后面的功能实现,其实就是python写XML算法了。
[而且现在如果输入:http://1.cdedunews.applinzi.com/ 会看到flask的欢迎界面:Hello World!]
参考资料
http://m.blog.csdn.net/article/details?id=50609223
http://m.blog.csdn.net/article/details?id=50724403
http://mp.weixin.qq.com/wiki/home/index.html
http://blog.csdn.net/changqing1234/article/details/49490943
http://www.cnblogs.com/txw1958/p/wechat-tutorial.html