1.1概要
大家好遂赠!我是lamecho(辣么丑),今天我們的《python自動(dòng)化測(cè)試應(yīng)用-番外篇》將會(huì)帶大家學(xué)習(xí)如何利用python搭建一個(gè)微信公眾號(hào)平臺(tái)。
開始前我們要準(zhǔn)備的內(nèi)容:一個(gè)新浪微博賬號(hào)剧蹂。
因?yàn)檫@里我們用的是新浪的SAE平臺(tái)接入微信公眾平臺(tái)處理消息确徙。
1.2第一步 新浪SAE平臺(tái)接入
Sina App Engine(簡(jiǎn)稱SAE)是新浪研發(fā)中心推出的國(guó)內(nèi)首個(gè)公有云計(jì)算平臺(tái)醒串,我們需要在這里用python創(chuàng)建我們的公眾號(hào)的服務(wù)后臺(tái)。
1.2.1登錄SAE創(chuàng)建python應(yīng)用
大家在注冊(cè)好新浪微博賬號(hào)后鄙皇,訪問新浪的SAE地址:http://sae.sina.com.cn/
使用微博登錄進(jìn)去芜赌。
如果是第一次登錄需要進(jìn)行相關(guān)信息的注冊(cè),大家按照步驟一步一步填寫即可伴逸。
注冊(cè)完畢后進(jìn)入用戶中心頁(yè)面缠沈,大家看到如下頁(yè)面,選擇紅框所示的創(chuàng)建云應(yīng)用SAE
“立即創(chuàng)建”
點(diǎn)擊“立即創(chuàng)建”后進(jìn)入創(chuàng)建應(yīng)用的頁(yè)面错蝴,選擇開發(fā)語(yǔ)言Python洲愤,以及應(yīng)用信息的二級(jí)域名和應(yīng)用名稱。大家注意這里的二級(jí)域名是在等會(huì)兒我們接入微信平臺(tái)要用到的顷锰。
填完這些信息后點(diǎn)擊頁(yè)面右側(cè)的“創(chuàng)建應(yīng)用”的按鈕柬赐,進(jìn)入代碼管理頁(yè)面,我們?cè)诖颂幘涂梢詣?chuàng)建我們的第一個(gè)應(yīng)用版本官紫,選擇“創(chuàng)建版本”按鈕生成第一個(gè)版本肛宋,再點(diǎn)擊“編輯代碼”進(jìn)入代碼編輯界面。
如下圖顯示的SAE的代碼編輯窗口束世,現(xiàn)在我們就開始編寫我們的微信后臺(tái)了酝陈。
第一步:編輯config.yaml文件
config.yaml是我們的后臺(tái)配置文件,初始顯示我們應(yīng)用的名稱及版本號(hào)毁涉,我們需要聲明加入我們后面要用到的一些庫(kù)文件及它的版本沉帮。web.py是我們python一個(gè)開源的web框架,后面我們就是按照這個(gè)框架去搭建后臺(tái)薪丁,添加內(nèi)容如下遇西。
libraries:
- name: web.py
version: "0.36"
- name: lxml
version: "2.3.4"
第二步:編輯index.wsgi文件
該文件初始是一個(gè)寫好的demo,在我們未修改此文件時(shí)严嗜,訪問我們的應(yīng)用鏈接也就是剛才創(chuàng)建應(yīng)用版本后出現(xiàn)的鏈接粱檀,如http://1.word2.applinzi.com,大家可以在頁(yè)面看到新的頁(yè)面出現(xiàn)了“Hello, SAE!“漫玄。
接下來我們刪掉原有的內(nèi)容茄蚯,寫入下面的代碼
# -*- coding:utf8 -*-
import os
import hashlib
import web
import lxml
import time
import os
import urllib2,json
from lxml import etree
import sae
from wx import wx_Interface
web.config.debug = True
urls=('/wx','wx_Interface')
app_root = os.path.dirname(__file__)
templates_root = os.path.join(app_root,'templates')
render = web.template.render(templates_root)
app = web.application(urls, globals()).wsgifunc()
application=sae.create_wsgi_app(app)
第三步:創(chuàng)建我們?cè)趇ndex.wsgi中引入的wx.py文件
wx.py這個(gè)文件創(chuàng)建在根目錄压彭,代碼如下,這里需要注意在GET方法里的token渗常,我們?cè)谶@里設(shè)置為“123456“壮不,后面在接入微信平臺(tái)要用。
# -*- coding: utf-8 -*-
import hashlib
import web
import lxml
import time
import os
import urllib2,json
from lxml import etree
import sae.const
import MySQLdb
import urllib
import urllib2
class wx_Interface:
def __init__(self):
self.app_root =os.path.dirname(__file__)
self.templates_root =os.path.join(self.app_root, 'templates')
self.render =web.template.render(self.templates_root)
defget_Access_Token(self):
url='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx3b5a2bce4972bc&secret=61345da331b57fdbac1096551b15'
ret=urllib2.urlopen(url)
returnjson.load(ret)['access_token']
def get_material(self):
url='https://api.weixin.qq.com/cgi-bin/material/get_materialcount?access_token='
url=url+self.get_Access_Token()
#data={"type":"image","offset":0,"count":10}
#data=json.dumps(data)
#res=urllib2.Request(url)
ret=urllib2.urlopen(url)
return json.load(ret)
def GET(self):
data = web.input()
signature=data.signature
timestamp=data.timestamp
nonce=data.nonce
echostr=data.echostr
token="123456"
list=[token,timestamp,nonce]
list.sort()
sha1=hashlib.sha1()
map(sha1.update,list)
hashcode=sha1.hexdigest()
if hashcode ==signature:
return echostr
def POST(self):
str_xml=web.data()
xml=etree.fromstring(str_xml)
msgType=xml.find("MsgType").text
fromUser=xml.find("FromUserName").text
toUser=xml.find("ToUserName").text
ifmsgType=='text':
content=xml.find("Content").text
returnself.render.reply_text(fromUser,toUser,int(time.time()),content.encode('utf-8'))
ifmsgType=='event':
ifxml.find('Event').text=='subscribe':
returnself.render.reply_text(fromUser,toUser,int(time.time()),u'感謝關(guān)注我的公眾號(hào)!\r\n更多功能敬請(qǐng)期待皱碘!')
第四步:創(chuàng)建reply_text.xml文件
在根目錄下首先創(chuàng)建一個(gè)“templates“文件夾询一,然后在里邊創(chuàng)建reply_text.xml文件。內(nèi)容如下:
$def with (toUser,fromUser,createTime,content)
$createTime
$content
第五步:保存代碼癌椿,退出
1.3第二步 微信平臺(tái)接入
首先我們要注冊(cè)一個(gè)微信公眾號(hào)健蕊,注冊(cè)的流程也不復(fù)雜,點(diǎn)擊注冊(cè)踢俄,如果是個(gè)人的話選擇“訂閱號(hào)“缩功,接下來就是郵箱激活等步驟,大家按照流程走就好了都办。
注冊(cè)流程走完后進(jìn)入自己的公眾平臺(tái)頁(yè)面嫡锌,選擇頁(yè)面下方的“開發(fā)—基本配置“
進(jìn)入配置頁(yè)面后,點(diǎn)擊紅框的“修改配置“按鈕琳钉,就可以設(shè)置公眾號(hào)的后臺(tái)URL和token了势木,這里的url填寫我們?cè)谛吕说钠脚_(tái)創(chuàng)建應(yīng)用的鏈接并在最后加上‘/wx’,token就是在wx.py里的token值槽卫。最后點(diǎn)擊”提交“跟压,沒有錯(cuò)誤彈出表示你提交成功了。然后你可以讓大家關(guān)注你的微信公眾號(hào)歼培,看看效果啦震蒋。
最后感謝大家耐心看完本篇,我是lamecho辣么丑躲庄!
原創(chuàng)文章查剖,轉(zhuǎn)載請(qǐng)注明出處。
歡迎關(guān)注我的個(gè)人微信號(hào)”fire-bug“噪窘,了解最新文章或提出你的問題和觀點(diǎn)