【微信易信公众平台开发】开启开发者模式
2013-12-14 10:48
676 查看
本系列文章均为A2BGeek原创,转载务必在明显处注明:
转载自A2BGeek的【微信易信公众平台开发】系列,原文链接:http://blog.csdn.net/a2bgeek/article/details/17250383
我的个人博客站点已经开通,会有技术分享和其他一些有意思的东西,希望读者能去访问一下,网址是http://a2bgeek.me
我把微信/易信的公众号看成一个APP内的轻量级APP(此时可以把微信/易信看成是应用商店),为什么这么说呢?因为有很多日常生活需要的服务都能在公众号中得到,比如查询天气、查询快递、办理银行业务、办理手机业务等,再加上现在有了自定义菜单,俨然已经成为了一个APP,但是这种APP是有局限性的,其一是这种APP只是一个I/O型的APP,即用户输入然后得到一个输出;其二是交互方式比较单调,除了I/O就是跳转到网页,只能在网页上想想有什么好的交互方式了。
编辑模式与开发模式的区别
玩公众平台开发首先要明白“编辑模式”(易信中叫做“自动回复”)和“开发者模式”的区别,下面两张图可以清楚地看到区别:
在编辑模式下,用户在公众号内的输入被发送到微信服务器上,微信服务器根据预先设置的“消息自动回复”、“关键词自动回复”把消息发回给客户端。
在开发模式下,用户的输入首先发送到微信服务器上,微信服务器把消息转发给开发者的服务器,开发者的服务器处理之后给微信服务器发消息,微信服务器再把消息转发给客户端。微信服务器在某种意义上成了一个代理服务器,不过有个特殊的限制就是开发者服务器在收到消息后必须在5s内给微信服务器发消息,否则微信服务器不会接受此次返回的消息。
在有了个人服务器之后,你需要做的就是“网址接入”,接入后微信/易信服务器就能和你的个人服务器通信了。
如图,当你填写上URL和Token后,点击“提交验证”的按钮后,微信/易信服务器会发送GET请求到你的服务器上,如果有对HTTP不熟悉的朋友,可以看我的这篇博客http://blog.csdn.net/a2bgeek/article/details/11580395,GET请求的参数分别是:
开发者通过检验signature对请求进行校验,校验方式如下:
若确认此次GET请求来自微信/易信服务器,请原样返回echostr参数内容,则接入生效,否则接入失败。
signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
下面上代码,服务器端我使用的是Tornado框架:
好了今天就到这里,下一篇将讲解一个非常给力的功能——如何生成自定义菜单。
转载自A2BGeek的【微信易信公众平台开发】系列,原文链接:http://blog.csdn.net/a2bgeek/article/details/17250383
我的个人博客站点已经开通,会有技术分享和其他一些有意思的东西,希望读者能去访问一下,网址是http://a2bgeek.me
我把微信/易信的公众号看成一个APP内的轻量级APP(此时可以把微信/易信看成是应用商店),为什么这么说呢?因为有很多日常生活需要的服务都能在公众号中得到,比如查询天气、查询快递、办理银行业务、办理手机业务等,再加上现在有了自定义菜单,俨然已经成为了一个APP,但是这种APP是有局限性的,其一是这种APP只是一个I/O型的APP,即用户输入然后得到一个输出;其二是交互方式比较单调,除了I/O就是跳转到网页,只能在网页上想想有什么好的交互方式了。
编辑模式与开发模式的区别
玩公众平台开发首先要明白“编辑模式”(易信中叫做“自动回复”)和“开发者模式”的区别,下面两张图可以清楚地看到区别:在编辑模式下,用户在公众号内的输入被发送到微信服务器上,微信服务器根据预先设置的“消息自动回复”、“关键词自动回复”把消息发回给客户端。
在开发模式下,用户的输入首先发送到微信服务器上,微信服务器把消息转发给开发者的服务器,开发者的服务器处理之后给微信服务器发消息,微信服务器再把消息转发给客户端。微信服务器在某种意义上成了一个代理服务器,不过有个特殊的限制就是开发者服务器在收到消息后必须在5s内给微信服务器发消息,否则微信服务器不会接受此次返回的消息。
成为开发者
这部分大概说一下就可以了,首先你要注册公众平台的账号,微信的是https://mp.weixin.qq.com,易信的是https://plus.yixin.im/,然后登录,然后在“高级功能”中会看到有“编辑模式”/“自动回复”和“开发模式”,微信和易信都是同时不能开启两种模式,需要先关闭“编辑模式”/“自动回复”,然后打开“开发模式”,这时会提示申请成为开发者,申请一下就行了,审核大概半天时间。开启开发者模式
如上图所示,开发模式需要开发者有一个个人的服务器,不过对于大多数开发者来说弄一个服务器有点奢侈,还好我们已经进入了所谓的云计算时代,有土豪已经为我们搭好了服务器,你可以随便选择一个ae,比如gae、bae、sae等等。我个人的习惯是用bae,用git克隆一个版本到电脑上,写好了再push上去。这里就不介绍云引擎的用法了,不会的读者可以花上一点儿时间玩一玩,很好上手。在有了个人服务器之后,你需要做的就是“网址接入”,接入后微信/易信服务器就能和你的个人服务器通信了。
如图,当你填写上URL和Token后,点击“提交验证”的按钮后,微信/易信服务器会发送GET请求到你的服务器上,如果有对HTTP不熟悉的朋友,可以看我的这篇博客http://blog.csdn.net/a2bgeek/article/details/11580395,GET请求的参数分别是:
参数 | 描述 |
---|---|
signature | 易信加密签名 |
timestamp | 时间戳 |
nonce | 随机数 |
echostr | 随机字符串 |
加密/校验流程: 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代替了。
好了今天就到这里,下一篇将讲解一个非常给力的功能——如何生成自定义菜单。
相关文章推荐
- 微信开发之公众平台开发模式下的数据交互模式
- 【微信易信公众平台开发】写在最前面
- 微信/易信公共平台开发(一):开发了一个简单易用的PHP类(提供源码),十几行代码搞定一个公众号
- (Java)微信之个人公众账号开发(一)——进入开发者模式
- 微信公众平台开发 微信公众平台开发模式 企业微信公众平台 刮刮乐
- 微信/易信公共平台开发(四):公众号调试器 (仿真微信平台,提供PHP源码)
- (Java)微信之个人公众账号开发(一)——进入开发者模式
- 【公众号开发】开启微信公众号开发者模式接收消息
- 微信/易信公共平台开发(四):公众号调试器 (仿真微信平台,提供PHP源码)
- 微信公众平台开发模式 微信 语音识别 公众平台 消息接口 语音识别
- 微信公众平台开发1--微信公众账号开发者模式
- 【微信易信公众平台开发】天气查询功能
- 微信/易信公共平台开发(四):公众号调试器 (仿真微信平台,提供PHP源码)
- 【玩转微信公众平台之五】 进军开发者模式!冲啊!
- 【微信开发】开启开发者模式
- 【微信易信公众平台开发】创建自定义菜单
- 微信/易信公共平台开发(一):开发了一个简单易用的PHP类(提供源码),十几行代码搞定一个公众号
- 微信开发原理 公众平台开发模式的数据交互方式
- 微信公众帐号开发教程第3篇-开发模式启用及接口配置
- 微信公众帐号开发教程第3篇-开发模式启用及接口配置