Python+Tornado开发微信公众号(二)

四. IOLoop定时获取access_token和jsapi_ticket

3.Redis数据库

如果有对Redis不了解的同学,可参考Redis快速入门

basecache.py

tokencache.py

4. 使用tornado的Ioloop实现定时获取access_token和 jsapi_ticket,并将获取到的access_token和 jsapi_ticket保存在Redis数据库中

wxconfig.py

wxshedule.py

run.py将定时器的启动放在主程序入口处,保证每次启动服务器时,重新启动定时器

五. 自定义菜单及点击菜单时获取openid

1. 编写菜单对应的html页面

先在template模板文件夹下制作一个html页面,用于点击自定义菜单时跳转到的网页.

编写一个页面处理类,用于接收tornado.web.RequestHandler请求

给PageHandler添加url规则

2.创建一个菜单,并给菜单添加获取授权code的URL

以下是微信公众平台官方文档给出的具体流程,详见 网页授权获取用户基本信息

我们希望在用户点击自定义菜单时,需要先获取用户的openid,以便从我们自己的后台中通过该openid获取这个用户更多的信息,比如它对应的我们后台中的uid等, 如果我们后台中没有这个用户,则需要执行绑定等操作.

因此我们需要给这个自定义菜单按钮添加一个对应的URL,点击这个菜单,跳转到这个URL,这个URL会触发获取code操作,获取到code后,通过获取授权的access_token接口,获取openid及access_token

(1) 给菜单添加url,及state映射关系

state为自定义字符串,可以用来标识是用户点击了哪一个菜单,放在一个dict字典中,当前我们制作的第一个菜单就对应/page/index映射

附:涉及到的主要程序代码如下:

wxconfig.py

wxauthorize.py 中的 WxAuthorServer类

wxmenu.py

wx_handler.py

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171210G0O31000?refer=cp_1026

扫码关注云+社区