【微信易信公众平台开发】开启开发者模式

【微信易信公众平台开发】开启开发者模式我把微信 易信的公众号看成一个 APP 内的轻量级 APP 此时可以把微信 易信看成是应用商店 为什么这么说呢 因为有很多日常生活需要的服务都能在公众号中得到 比如查询天气 查询快递 办理银行业务 办理手机业务等 再加上

大家好,欢迎来到IT知识分享网。

本系列文章均为A2BGeek原创,转载务必在明显处注明:
转载自A2BGeek的【微信易信公众平台开发】系列,原文链接:【微信易信公众平台开发】开启开发者模式


我把微信/易信的公众号看成一个APP内的轻量级APP(此时可以把微信/易信看成是应用商店),为什么这么说呢?因为有很多日常生活需要的服务都能在公众号中得到,比如查询天气、查询快递、办理银行业务、办理手机业务等,再加上现在有了自定义菜单,俨然已经成为了一个APP,但是这种APP是有局限性的,其一是这种APP只是一个I/O型的APP,即用户输入然后得到一个输出;其二是交互方式比较单调,除了I/O就是跳转到网页,只能在网页上想想有什么好的交互方式了。

编辑模式与开发模式的区别

玩公众平台开发首先要明白“编辑模式”(易信中叫做“自动回复”)和“开发者模式”的区别,下面两张图可以清楚地看到区别:

【微信易信公众平台开发】开启开发者模式

【微信易信公众平台开发】开启开发者模式

成为开发者

开启开发者模式

如上图所示,开发模式需要开发者有一个个人的服务器,不过对于大多数开发者来说弄一个服务器有点奢侈,还好我们已经进入了所谓的云计算时代,有土豪已经为我们搭好了服务器,你可以随便选择一个ae,比如gae、bae、sae等等。我个人的习惯是用bae,用git克隆一个版本到电脑上,写好了再push上去。这里就不介绍云引擎的用法了,不会的读者可以花上一点儿时间玩一玩,很好上手。

在有了个人服务器之后,你需要做的就是“网址接入”,接入后微信/易信服务器就能和你的个人服务器通信了。

【微信易信公众平台开发】开启开发者模式

如图,当你填写上URL和Token后,点击“提交验证”的按钮后,微信/易信服务器会发送GET请求到你的服务器上,如果有对HTTP不熟悉的朋友,可以看我的这篇博客【微信易信公众平台开发】开启开发者模式,GET请求的参数分别是:

参数 描述
signature 易信加密签名
timestamp 时间戳
nonce 随机数
echostr 随机字符串

开发者通过检验signature对请求进行校验,校验方式如下:

加密/校验流程: 1. 将token、timestamp、nonce三个参数进行字典序排序 2. 将三个参数字符串拼接成一个字符串进行sha1加密 3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信/易信 

若确认此次GET请求来自微信/易信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。

signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。

下面上代码,服务器端我使用的是Tornado框架:

from bae.api import logging import tornado.wsgi import hashlib class MainHandler(tornado.web.RequestHandler): def get(self): signature = self.get_argument('signature') timestamp = self.get_argument('timestamp') nonce = self.get_argument('nonce') echostr = self.get_argument('echostr') if checksignature(signature, timestamp, nonce): logging.info('return echostr') self.write(echostr) else: logging.info('return fail') self.write('fail') app = tornado.wsgi.WSGIApplication([ (r"/", MainHandler), ]) from bae.core.wsgi import WSGIApplication application = WSGIApplication(app) def checksignature(signature, timestamp, nonce):     args = []     args.append("XXXXXXXX")     args.append(timestamp)     args.append(nonce)     args.sort()     mysig = hashlib.sha1(''.join(args)).hexdigest()     logging.info('mysig is %s' % mysig)     return mysig == signature 

代码中我自己的Token用XXXXXXX代替了。

好了今天就到这里,下一篇将讲解一个非常给力的功能——如何生成自定义菜单。



免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/139310.html

(0)
上一篇 2025-06-06 21:15
下一篇 2025-06-06 21:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信