- 了解微信号的种类特点
- 本地代理环境的搭建以及最入门的加密认证
- 域名服务器环境配置与利用QQ浏览器代理调试端口结合看
- 加密认证逻辑容易出错,耐心多看几遍
- 企业号:为企业或组织提供移动应用入口,帮助企业建立与员工、上下游供应链及企业应用建的联系
- 订阅号:比较适合于个人、小团队,主要是用于信息传播,帮助管理用户以及和用户互动,比如:撰写文章、咨询传播、消息定制等等
服务号:为企业和组织提供更强大的业务服务于用户管理能力,比如:支付、智能接口等
公众号分为认证与非认证,认证的比非认证的能做更多事情
认证一般需要你有一个开户过的企业
订阅号认证与非认证的区别就是,认证账号别人可以直接在添加好友里搜索关键词找到你
订阅号与服务号的三点不同:
- 出现位置不同
- 单月发送消息数量不同,订阅号可以一天1篇,服务号一个月最多4篇
- 订阅号没有9大接口和支付功能
- 语音识别:识别语音,并翻译成文本
- 客服接口:公众号可以在你发送过消息的24小时内,向你回复消息
- OAuth 2.0网页授权:可以通过授权接口,请求用户授权,从而拿到更多用户的信息
- 生成带参数的二维码:公众号可以获得一系列携带不同参数的二维码,在用户扫描关注公众号后,公众号可以根据参数分析各二维码的效果,这些参数可以定制,从而可以实现更多分析结果,比如用户从哪来的
- 获取用户地理位置:公众号能够获得用户进入公众号会话时的地理位置,可以做微信导航
- 获取用户基本信息:公众号可以根据加密后的用户OpenID,通过一系列的参数交互,最终拿到用户基础信息,包括头像、名称、性别、地区
- 获取关注着列表:可以拿到所有关注者的OpenID,知道多少人关注你,或者是谁在关注你
- 用户分组接口:在后台为用户移动、创建、修改分组
- 上传下载多媒体文件:需要时在微信服务器上上传下载多媒体文件
- 会话界面的自定义菜单
- 多客服接口,提供贴心快捷的客服服务
- 获取用户地理位置,精确提供服务
- 高级群发接口,实现更灵活的群发能力
- 用户分组接口,方便管理用户
把内网端口暴露到公网 http://www.ultrahook.com/faq gem install ultrahook ultrahook --k hl8sQ1i24bQEIGrhDqexBbQ7lUtVtPO7 localhost 1234
npm install -g localtunnel lt --port 1234 lt --port 3100 --subdomain yowangbinwecaht
配置完成微信公众号后,点击提交微信服务器会发送GET请求将token,timestamp,nonce三个参数传至本地服务器
{ signature: 'df737dc55a7bc612a114b5e4a6052134c8060a3f',
echostr: '4469749067976388605',
timestamp: '1465461613',
nonce: '82235853' }
- 将token、timestamp、nonce三个参数进行字典序排序 [token,timestamp,nonce].sort().join('');
- 将三个参数字符串拼接成一个字符串进行sha1加密
- 将加密后的字符串与signature对比,如果相同,表示这个请求来自微信,我们直接原样返回echostr参数内容,接入验证就成功了
代码可以更精简、更易懂、对于反反复复的异步交互更适用这个框架实现
app.use(function*(next) {
var signature = this.query.signature,
echostr = this.query.echostr,
timestamp = this.query.timestamp,
nonce = this.query.nonce,
token = config.wechat.token;
var str = [token, timestamp, nonce].sort().join('');
if (sha1(str) === signature)
return this.body = echostr + '';
else
return this.body = 'error';
})
- 了解微信中消息和回复的种类
- 完成一个简单的回复机器人小例子
- 使用QQ浏览器代理调试端口
对于有经验的可按需学习,新人新手应该稳扎稳打,需要注意票据这一节
无论接收消息或回复消息均为POST请求,格式均为xml,意味着我们需要在后端对POST请求进行路由匹配以及xml数据结构的解析,从而判断消息的数据类型,回复消息的时候依然需要将数据包装成xml格式返回给微信服务器
文本消息、图片消息、语音消息、视频消息、小视频消息、地理位置消息、链接消息
文本消息、图片消息、语音消息、视频消息、音乐消息、图文消息
- 微信公众号接口只支持80端口
- 微信后台配置的URL是唯一能接收到消息、事件的入口,我们在公众号中的所有操作都是基于这个URL进行交互。
- 调用所有微信接口时几乎全部使用https协议
- 用户向公众号发送消息时,会传过来OpenID,这个OpenID是用户微信号加密后的值,每个用户在每个公众号中的OPenID是唯一的
- 在开发阶段,要留意报错信息,比如全局返回码这个非常非常重要,依靠全局返回码就是可定位错误的类型和大概位置,开发出了问题最终依然要靠自己动手解决
- 在和微信服务器交互的时候,需要满足各个接口的规范限制、调用频率限制,也要特别注意模板消息、用户数据等敏感信息的使用规范
koa要求中间件是一个generator函数,需要将中间件return回去
- access_token每2小时(7200秒)自动失效,需要重新获取
- 只要更新了access_token,之前的那个就不能使用了
- 让系统每隔2个小时启动去刷新一个票据,这样无论何时我们内部调用接口,这个票据始终是最新的
- 为了方便频繁调用,我们需要把票据存储在一个地方,并且是唯一的一个地方
与微信服务器交互的五个步骤:
- 处理POST类型的控制逻辑,接受这个XML的数据包
- 解析这个数据包,获取数据包的消息类型或者事件类型
- 拼装定义好的消息
- 包装成XML的格式
- 在5秒内返回回去
- 微信交互流程
- Promise如何使用
- Generator生成器
- Koa和Express中间件
没有疑问的直接进入第四章学习,新手新人加强对技术环节的印象,复习前面的学习内容
将微信提供的重要接口一个一个串下来,尤其是实现素材接口的调用
- 上传临时素材之图片和视频
- 永久素材接口
- 用户分组
- 获取用户私密信息
- 地理位置和用户资料