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

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

首先,我们要去注册一个微信公众号,这个不是问题,关键在于配置服务器时要填的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 time
from flask import Flask,g,request,make_response
import hashlib
import xml.etree.ElementTree as ET

app = 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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值