flask+BAE快速搭建微信公众号

来源:互联网 发布:类似沙沙网络的网站 编辑:程序博客网 时间:2024/04/29 17:33

由于工作室的需要,老师让我自己先去做一个公众测试号出来,之前网络上一直没有合适的教程,现在把自己做的写出来,希望能给大家一点参考。

首先,我们要去注册一个微信公众号,这个不是问题,关键在于配置服务器时要填的url和token,因为工作室服务器的80端口已被占用,只能找云服务器,由于百度现在送代金券 :),于是就选了百度的应用引擎BAE,在申请时选择python-web类型,代码版本工具选择git,这样就部署好了。

接着,我们可以在本地新建一个文件夹weixin,用以存放项目文件,然后打开终端,cd至weixin,这时在你的部署列表里复制你刚才部署的项目的git地址(例:https://git.duapp.com/appid123456),回到终端,:~/weixin$ git clone https://git.duapp.com/appid123456,之后会要求你输入用户名和密码,就是百度云开放的用户名及密码。

这个时候在appid123456文件夹中可以看到三个文件:
appid123456中文件

首先把app.conf文件中的handlers:
- url : / 改为
handlers:
- url : /.*
注意其它的不要动!

然后是index.py的代码:

 # -*- coding:utf8 -*-  import timefrom flask import Flask,g,request,make_responseimport hashlibimport xml.etree.ElementTree as ETapp = Flask(__name__)app.debug=True@app.route('/',methods=['GET','POST'])def wechat_auth():    if request.method == 'GET':        token='your token' #微信配置所需的token        data = request.args        signature = data.get('signature','')        timestamp = data.get('timestamp','')        nonce = data.get('nonce','')        echostr = data.get('echostr','')        s = [timestamp,nonce,token]        s.sort()        s = ''.join(s)        if (hashlib.sha1(s).hexdigest() == signature):            return make_response(echostr)    else:        rec = request.stream.read()        xml_rec = ET.fromstring(rec)        tou = xml_rec.find('ToUserName').text        fromu = xml_rec.find('FromUserName').text        content = xml_rec.find('Content').text        xml_rep = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[text]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>"        response = make_response(xml_rep % (fromu,tou,str(int(time.time())), content))        response.content_type='application/xml'        return response    return 'Hello weixin!'from bae.core.wsgi import WSGIApplication  application = WSGIApplication(app)     

这一段代码实现了向公众号发送消息自动回复相同消息的功能,其中要注意的就是token要和你申请公众号进行配置时的token一致,此前网上的代码都少一句return,使得代码在BAE里不能用,报错viewfunction doesn’t return a response,记得不太清楚,大意是这样,意思就是函数缺乏返回语句,可以返回一个函数或一个字符串,具体看需要(Flask还是要好好学,不然不会犯这种错误……)。

最后,我们需要做的就是告诉百度我们使用了flask这个模块,在appid123456文件夹中新建requirements.txt文件,在其中输入flask保存关闭即可。
现在我们可以用git来同步这些文件了,在appid123456中打开终端,
git add app.conf index.py requirements.txt
git commit -m ‘^^^^^’
git push origin master
再输入用户名密码即可。

此时打开百度开放云管理中心,找到BAE的部署列表,我们可以看到提示有新版,点击快捷发布,我们就可以把微信的接口发布出去啦,再回到微信那里,url就是你申请的域名,token也在index.py里,提交以后就可以啦!

本人也是初学者,其中若有错误之处,还希望同学们指出来,并欢迎批评和建议!!^_^

1 0
原创粉丝点击