輕松實(shí)現(xiàn)python搭建微信公眾平臺(tái)
本文主要是一步一步教大家如何利用python搭建微信公眾平臺(tái),有興趣的朋友可以參考一下
使用的工具,python 新浪SAE平臺(tái),微信的公眾平臺(tái)
你需要先在微信的公眾平臺(tái)與新浪SAE平臺(tái)上各種注冊(cè),微信平臺(tái)注冊(cè)的時(shí)候需要你拍張手持身份證的照片,還有幾天的審核期
微信公眾平臺(tái):http://mp.weixin.qq.com
新浪SAE:http://sae.sina.com.cn/
等待微信公眾審核通過(guò)后,登錄公眾平臺(tái)后,點(diǎn)擊高級(jí)功能。將會(huì)看到需要提供一個(gè)接入信息:
微信接口配置
那么我們需要一個(gè)網(wǎng)址作為接口(這時(shí)就需要SAE上搭建Python的一個(gè)應(yīng)用),Token呢,就是相當(dāng)于我們和微信之間約定的“密碼”,這里可以隨便填寫英文或者數(shù)字,但實(shí)測(cè)輸入純數(shù)字有時(shí)會(huì)有問(wèn)題,所以還是字符串比較靠譜。
第一步,在SAE上搭建python的應(yīng)用,在下圖的應(yīng)用里選擇python應(yīng)用。
填好二級(jí)域名和應(yīng)用名稱等,選擇好語(yǔ)言。這里我們使用Python開(kāi)發(fā)選擇web應(yīng)用。創(chuàng)建好應(yīng)用之后,在代碼管理中創(chuàng)建一個(gè)新的版本。而后我們可以選擇編輯代碼。能夠?qū)崿F(xiàn)在線編輯,根本用不著配置本地環(huán)境,SVN等等。當(dāng)然像這種輕量級(jí)的應(yīng)用在線編輯器就可以了,SVN的話還不如在線編輯好用
第二步,編寫index.wsgi
因?yàn)槲覀兪褂玫氖莣eb.py框架,因?yàn)槠淞己玫膞ml解析。
首先編寫config.yaml
name: yangyanxing version: 1 libraries: - name: webpy version: "0.36" - name: lxml version: "2.3.4" ...
注意嚴(yán)格的縮進(jìn),差一個(gè)空格你就廢了!而且調(diào)試的時(shí)候很不好發(fā)現(xiàn)問(wèn)題。。。
接著我們繼續(xù)編寫index.wsgi
# coding: UTF-8 import os import sae import web from weixinInterface import WeixinInterface urls = ( '/weixin','WeixinInterface' ) 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)
簡(jiǎn)單解釋一下,
from weixinInterface import WeixinInterface
這里我們需要再創(chuàng)建一個(gè)weixinInterface的py文件,你也可以將這個(gè)類寫在index.wsgi文件中,只是這樣看起來(lái)會(huì)亂亂的
新建一個(gè)weixinInterface.py文件,注意大小寫,寫入以下代碼
# -*- coding: utf-8 -*- import hashlib import web import lxml import time import os import urllib2,json from lxml import etree class WeixinInterface: 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) def GET(self): #獲取輸入?yún)?shù) data = web.input() signature=data.signature timestamp=data.timestamp nonce=data.nonce echostr=data.echostr #自己的token token="yangyanxing" #這里改寫你在微信公眾平臺(tái)里輸入的token #字典序排序 list=[token,timestamp,nonce] list.sort() sha1=hashlib.sha1() map(sha1.update,list) hashcode=sha1.hexdigest() #sha1加密算法 #如果是來(lái)自微信的請(qǐng)求,則回復(fù)echostr if hashcode == signature: return echostr
這里定義了一個(gè)GET方法,是根據(jù)微信公眾平臺(tái)的要求,進(jìn)行的token驗(yàn)證,因?yàn)檫@里我們定義了templates_root為根目錄下的templates,所以還要在根目錄下創(chuàng)建一個(gè)目錄templates的目錄
因?yàn)槲⑿攀菍Ⅱ?yàn)證信息GET發(fā)出去的,所以這里使用了GET方法來(lái)取得值并且返回相應(yīng)用值
保存全部,現(xiàn)在回到微信的公眾平臺(tái)高級(jí)管理界面
微信接口配置
在url里面填寫你在新浪SAE里應(yīng)用名稱并且加上/weixin,如:http://XXXX.sinaapp.com/weixin token隨便輸入,只要注意更改weixinInterface.py中的token就行了,輸入好了以后點(diǎn)擊提交,如果沒(méi)有什么問(wèn)題的話就會(huì)通過(guò)驗(yàn)證!
第三步,新建一個(gè)簡(jiǎn)單的自動(dòng)回復(fù)的方法,鸚鵡學(xué)舌,就是用戶說(shuō)什么,它也回復(fù)什么,沒(méi)什么用,只是隨便玩玩!
在weixinInterface.py里繼續(xù)添加代碼
def POST(self): str_xml = web.data() #獲得post來(lái)的數(shù)據(jù) xml = etree.fromstring(str_xml)#進(jìn)行XML解析 content=xml.find("Content").text#獲得用戶所輸入的內(nèi)容 msgType=xml.find("MsgType").text fromUser=xml.find("FromUserName").text toUser=xml.find("ToUserName").text return self.render.reply_text(fromUser,toUser,int(time.time()),u"我現(xiàn)在還在開(kāi)發(fā)中,還沒(méi)有什么功能,您剛才說(shuō)的是:"+content)
這個(gè)def 是和上一個(gè)GET同級(jí)的,注意縮進(jìn)
接著我們?cè)趖emplates目錄下創(chuàng)建reply_text.xml模板文件,寫入以下代碼
$def with (toUser,fromUser,createTime,content) <xml> <ToUserName><![CDATA[$toUser]]></ToUserName> <FromUserName><![CDATA[$fromUser]]></FromUserName> <CreateTime>$createTime</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[$content]]></Content> </xml>
注意這里的toUser與fromUser是剛才post的是相反的,因?yàn)檫@里的toUser也就是POST函數(shù)里的fromUser,這里的fromUser也就是POST函數(shù)里的toUser,msgType是text
全部保存,現(xiàn)在就在用你的個(gè)人微信關(guān)注一下你創(chuàng)建的公眾微信號(hào),然后隨便輸入些內(nèi)容,如果沒(méi)有什么問(wèn)題,你將會(huì)收到一條鸚鵡學(xué)舌的回復(fù)內(nèi)容!
以上就是python搭建微信公眾平臺(tái)的全部?jī)?nèi)容,大家可以根據(jù)以上步驟進(jìn)行搭建。
- Win7下搭建python開(kāi)發(fā)環(huán)境圖文教程(安裝Python、pip、解釋器)
- win7 下搭建sublime的python開(kāi)發(fā)環(huán)境的配置方法
- 使用python搭建Django應(yīng)用程序步驟及版本沖突問(wèn)題解決
- 30分鐘搭建Python的Flask框架并在上面編寫第一個(gè)應(yīng)用
- 在MAC上搭建python數(shù)據(jù)分析開(kāi)發(fā)環(huán)境
- Eclipse中Python開(kāi)發(fā)環(huán)境搭建簡(jiǎn)單教程
- Windows下搭建python開(kāi)發(fā)環(huán)境詳細(xì)步驟
- Windows 7下Python Web環(huán)境搭建圖文教程
相關(guān)文章
Python實(shí)現(xiàn)識(shí)別文字中的省市區(qū)并繪圖
在做NLP(自然語(yǔ)言處理)相關(guān)任務(wù)時(shí),經(jīng)常會(huì)遇到需要識(shí)別并提取省、城市、行政區(qū)的需求。今天給大家介紹一個(gè)模塊,你只需要把字符串傳遞給這個(gè)模塊,他就能給你返回這個(gè)字符串內(nèi)的省、市、區(qū)關(guān)鍵詞,快來(lái)學(xué)習(xí)一下吧2022-06-06matplotlib基礎(chǔ)繪圖命令之bar的使用方法
這篇文章主要介紹了matplotlib基礎(chǔ)繪圖命令之bar的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08python 中split 和 strip的實(shí)例詳解
這篇文章主要介紹了 python 中split 和 strip的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-07-07selenium+python 去除啟動(dòng)的黑色cmd窗口方法
今天小編就為大家分享一篇selenium+python 去除啟動(dòng)的黑色cmd窗口方法。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05