nodejs 开发公众号

2018-04-07  本文已影响45人  love_program

概念

公众号

内网到外网的映射

  lt -h http://xxxx.com --port 80 

ps: 通过上述命令就可以将自己的域名对应的外网ip映射到本地的80端口

申请公众号

2.png 3.png

微信公众平台和微信开发平台的区别

如何接入公众号

ps:微信会向我们填写的url发送一个get请求,带有token,timestamp,nonce,signature,echostr几个参数

  1. 第一步: 将token、timestamp、nonce三个参数进行字典排序,并连接成一个字符串
    ps: token自己在服务器写死,保持跟微信后台填写的一样;其余两个参数是微信发送的请求带过来的
 let str = [timestamp,nonce,token].sort().join('');
  1. 第二步:将排序后的字符串sha1加密
  let sha = sha1(str);
  1. 将加密后的字符串与signature对比,如果相同,表示这个请求来源于微信,直接原样返回echostr参数内容,接入验证就成功了

  2. 到这里就成为了一个开发者了

这里选择koa框架进行和微信交互

koa项目依赖的库

cnpm install koa -D
cnpm install sha1 -D
cnpm install bluebird -D
cnpm install request -D
cnpm install raw-body -D
cnpm install xml2js -D
cnpm install ejs -D
cnpm install loadash -D
cnpm  install  crypto -D  

微信中接受消息与回复的种类

微信操作注意事项

  1. 微信公众号接口只支持80端口
  2. 微信后台配置的URL是唯一能接受到消息,事件的入口,我们在公众号的所有操作,都是基于这个url进行交互
  3. 调用所有微信接口时几乎全部使用https协议
  4. 用户向公众号发送消息时,会传递OpenID,该OpenID是用户微信号加密后的值,每个用户在每个公众号中OpenID是唯一的

access_token(票据)

  1. 开发者服务器每次请求微信服务器接口时,都需要带着access_token票据
  2. access_token每7200s(2个小时)就自动失效,需要重新获取
  3. 只要更新了access_token, 之前的票据就不能再使用
  4. 让系统每个2个小时自动去刷新一次票据,保证access_token永远都不会失效
  5. access_token可以存储在文件里面,或者数据库里面

自动回复的开发步骤

  1. 处理post类型的类型的控制逻辑,接受xml的数据包
  2. 解析数据包,获取数据包里面的消息类型或者事件类型
  3. 拼装定义好的消息
  4. 包装成xml的格式
  5. 在5s中内返回回去

如何区分不同的消息

微信服务号常见功能开发

  1. 上传临时素材之图片和视屏
  2. 永久素材接口
  3. 用户分组
  4. 获取用户私密信息
  5. 地理位置和用户资料
  6. 菜单
  7. 二维码
  8. js-sdk

如果公众号不能正常正常服务解决方案

网页里面调用微信分几步

JS SDK 与公众号的区别

JS SDK的作用

JS SDK提供了哪些功能

  1. 基础接口
    • 判断当前微信客户端版本是否支持指定js接口,比如这个网页不是在微信中打开的,我们可以关掉微信相关的功能;也可以让这个网页不可访问,替换成一个二维码让用户来扫描
  2. 分享接口
    • 可以自定义分享给好友的内容,比如标题,封面,描述,可以实现每个人分享出去的页面都是不同的
  3. 图像接口
    • 通过手机拍照或者相册选图以及预览
  4. 音频接口
    • 可以录音,可以播放语音,可以上传和下载语音;
  5. 智能接口
    • 提供了文字识别,或者语音识别功能
  6. 设备信息
    • 提供了获取当前的网络状况,比如是wifi还是4G,对于像视屏这样的网页,可以选择默认不加载,这样不会消耗用户的流量
  7. 摇一摇周边
  8. 界面操作
    • 能控制微信浏览器中,右上角的一些按钮的显示隐藏,比如隐藏分享的按钮
  9. 微信扫一扫
    • 可以识别二维码和一维码返回一个扫描结果
  10. 地址位置

如何调试微信JS SDK的功能

上一篇下一篇

猜你喜欢

热点阅读