国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python開發微信公眾平臺的方法詳解【基于weixin-knife】

2020-02-16 01:49:43
字體:
來源:轉載
供稿:網友

本文實例講述了Python開發微信公眾平臺的方法。分享給大家供大家參考,具體如下:

這兩天將之前基于微信公眾平臺的代碼重構了下,基礎功能以庫的方式提供,提供了demo使用的是django,看著之前為趕進度寫的代碼真的慘不忍睹,所以weixin-knife產生了,正如其名,提供的是必要的功能,而不是完整的應用。weixin-knife可以很方便的處理關注,取關注事件,處理文本消息,回復用戶信息,jssdk處理,oauth認證,以及微信支付。

github地址:https://github.com/Skycrab/weixin-knife。

首先看看怎么用

from .weixin import handler as HD@HD.subscribedef subscribe(xml):  return "welcome to brain"@HD.unsubscribedef subscribe(xml):  print "leave"  return "leave brain"

上面處理了關注和取關事件,通過裝飾器處理的還算透明。

處理文本消息,回復圖文消息如下:

@HD.textdef text(xml):  content = xml.Content  if content == "111":    return {"Title":"美女", "Description":"比基尼美女", "PicUrl":"http://9smv.com/static/mm/uploads/150411/2-150411115450247.jpg", "Url":"http://9smv.com/beauty/list?category=5"}  elif content == "222":    return [      ["比基尼美女", "比基尼美女", "http://9smv.com/static/mm/uploads/150411/2-150411115450247.jpg", "http://9smv.com/beauty/list?category=5"],      ["長腿美女", "長腿美女", "http://9smv.com/static/mm/uploads/150506/2-150506111A9648.jpg", "http://9smv.com/beauty/list?category=8"]    ]  elif content == "push":    Helper.send_text_message(xml.FromUserName, "推送消息測試")    return "push ok"  return "hello world"

如何文本是111或222,我們回復圖文消息,如何使push,我們使用客服接口推送消息,其它返回“hello world"

一般我們會使用oauth網頁授權獲取用戶的openid,如果是多個鏈接都需要通過oauth處理,代碼會很難看,通過裝飾器可以很好的處理這個問題。

def sns_userinfo_callback(callback=None):  """網頁授權獲取用戶信息裝飾器  callback(openid, userinfo):    return user  """  def wrap(func):    @wraps(func)    def inner(*args, **kwargs):      request = args[0] #django第一個參數request      openid = request.COOKIES.get('openid')      userinfo = None      if not openid:        code = request.GET.get("code")        if not code:          current = "http://"+ request.get_host() + request.get_full_path()          return redirect(WeixinHelper.oauth2(current))        else:          data = json.loads(WeixinHelper.getAccessTokenByCode(code))          access_token, openid, refresh_token = data["access_token"], data["openid"], data["refresh_token"]          #WeixinHelper.refreshAccessToken(refresh_token)          userinfo = json.loads(WeixinHelper.getSnsapiUserInfo(access_token, openid))      else:        ok, openid = Helper.check_cookie(openid)        if not ok:          return redirect("/")      request.openid = openid      if callable(callback):        request.user = callback(openid, userinfo)      response = func(request)      return response    return inner  return wrapsns_userinfo = sns_userinfo_callback()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西安市| 定结县| 黄平县| 通辽市| 桑植县| 黎川县| 贵德县| 宁陵县| 永修县| 岱山县| 尚义县| 安化县| 北碚区| 和平区| 怀远县| 兴山县| 平塘县| 河曲县| 邯郸市| 都安| 循化| 中江县| 都江堰市| 麻江县| 新竹县| 崇左市| 平阴县| 抚松县| 青田县| 周口市| 永清县| 杭锦旗| 三原县| 增城市| 固始县| 东乡| 永清县| 蕲春县| 阿瓦提县| 和硕县| 徐闻县|