由于工作室的需要,老师让我自己先去做一个公众测试号出来,之前网络上一直没有合适的教程,现在把自己做的写出来,希望能给大家一点参考。
首先,我们要去注册一个微信公众号,这个不是问题,关键在于配置服务器时要填的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文件夹中可以看到三个文件:
首先把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里,提交以后就可以啦!
本人也是初学者,其中若有错误之处,还希望同学们指出来,并欢迎批评和建议!!^_^