【微信易信公众平台开发】开启开发者模式
本系列文章均为A2BGeek原创,转载务必在明显处注明:
转载自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 | 随机字符串 |
开发者通过检验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代替了。
好了今天就到这里,下一篇将讲解一个非常给力的功能——如何生成自定义菜单。
【微信易信公众平台开发】开启开发者模式相关推荐
- 【微信易信公众平台开发】创建自定义菜单
本系列文章均为A2BGeek原创,转载务必在明显处注明: 转载自A2BGeek的[微信易信公众平台开发]系列,原文链接:http://blog.csdn.net/a2bgeek/article/det ...
- 【微信易信公众平台开发】天气查询功能
本系列文章均为A2BGeek原创,转载务必在明显处注明: 转载自A2BGeek的[微信易信公众平台开发]系列,原文链接:http://blog.csdn.net/a2bgeek/article/det ...
- 【微信易信公众平台开发】写在最前面
微信和易信一样,都有公众平台,使用方法几乎一样,不过易信政策比较宽松,所以我选择了易信来写这个系列的博客,具体要做一个什么样子的例子还没有想清楚,不过先把久违的自定义菜单体验一下先.本系列的第一篇是讲 ...
- 微信/易信公共平台开发(一):开发了一个简单易用的PHP类(提供源码),十几行代码搞定一个公众号
这两天学习了一下微信公共平台和易信公共平台的开发 (易信与微信协议是基本一样的)(PS:没听说过易信?你out了?) 公共平台开发原理这里就不讲了,如果是初次接触的同学,建议先看 David_Tang ...
- 微信/易信公共平台开发(四):公众号调试器 (仿真微信平台,提供PHP源码)
开发微信/易信公共平台时,调试往往很麻烦,一般只能在手机上边试边改, 或在服务器写日志.当你的服务器脚本有Bug时,手机上没有显示,追查是不容易的.我在开发过程中,编写了一个调试器, 能仿真微信/易信 ...
- 易信公众平台开发(ASP.NET WebForm) Using Senparc.Weixin.MP SDK
本文主要简单介绍如何通过Senparc.Weixin.MP SDK开发易信后台, 0.为什么可以用专门为微信开发的SDK 这个在Senparc.Weixin.MPSDK的官网里面有所提及, 你可以比较 ...
- 易信公众平台开发从入门到精通之接收普通消息
对公众号来说,这是一种新的接收用户发送消息的方式.公众号不需要再登录平台,就可以接收用户发送的文本,图片,语音,视频,地理位置等消息 当普通易信用户向公众账号发消息时,易信服务器将POST消息的XML ...
- 易信公众平台开发从入门到精通之天气预报
天气预报 易信公众平台支持图文消息的返回,今天我们就说说如何使用易信公众平台实现一个图文天气预报. 天气预报API接口 1百度天气API 百度天气预报API接口可以提供当天以及未来三天的天气预报,其U ...
- 易信公众平台开发从入门到精通之开发验证
开发者模式 在"高级功能"页面中,我们首先要开启"开发者模式",如下图: 点击"查看详情"按钮,打开界面如下: 这里我们需要填写URL和To ...
最新文章
- python3.6.3安装-CentOS6.8安装Python3.6.3
- kafka安装、配置、启动、常用命令及shell启动脚本编写
- linux之universal usb installer安装ubuntu
- 计算机选配 注意事项,选择鼠标注意事项有哪些
- Stanley-系列三
- 利用 Flask 动态展示 Pyecharts 图表数据的几种方法
- 快速修复 Log4j2 远程代码执行漏洞步骤
- 网页设计中一些小功能
- rhel5编译安装2.6.29.2内核
- mysql 获得年月函数_mysql之日期函数
- python可以代替按键精灵吗_Python 假装自己是按键精灵
- c++实习岗面试经历
- 装了V2.6.41,C4D启动卡死在初始化插件页面,装了RS后C4D无法启动,C4D用什么版本的RS?
- 小米平板1刷los神盾系统
- VMware Workstation Pro安装教程图文详解
- java技术--报警通知及实现方式
- android 后台自动拍照,怎么实现后台拍照功能,求解
- ICPR 2022 | 第一届卫星视频运动目标检测与跟踪挑战赛正式开赛
- 进程间通信的方式——信号、管道、消息队列、共享内存
- 播放器android版最新官方版下载安装,万能播放器安卓版下载