这篇文章只是一个学习笔记的形式,所以前后没有太强的逻辑性。
微信号的功能和分类
微信公众平台的账号主要分为企业号,订阅号和服务号,企业号现在改名为企业微信,同时微信新出了一种叫小程序的开放功能。
企业号不太适合个人小型的开发,为企业或者组织提供移动应用入口,帮助企业建立与员工、上下游供应商及企业应用间的连接。订阅号比较适合于个人和小团队,主要用于信息传播,帮助管理用户以及和用户互动。比如撰写文章,咨询传播,消息定制能。服务号适用于企业和组织,提供更强大的业务服务于用户管理能力。比如支付,智能接口等。认证之后的微信公众号会开放更多的接口和功能。
订阅号和服务号的差别
- 订阅号和服务号在微信中出现的位置不同;
- 单月发送的消息数量不同,订阅号一天可以发送一条,服务号一个月最多四条;
- 订阅号没有9大接口和支付功能。
服务号的九大接口有哪些呢?
- 语音识别
- 客服接口
- OAuth 2.0网页授权
- 生成带参数的二维码
- 获取用户地理位置
- 获取用户基本信息
- 获取关注者列表
- 用户分组接口
- 上传下载多媒体文件
接入微信公众号
首先,要配置微信公众号后台,然后,需要验证公众号。
配置微信公众号
配置微信公众号需要填写URL,Token和EncodingAESKey,URL是开发者用来接收微信消息的接口URL,Token由开发者任意填写,来生成一个签名,与接口URL进行比对,保证安全。EncodingAESKey是随机生成,用作消息体加密和解密的密钥。
验证公众号
验证微信公众号的流程如下:
- 将微信服务器发来的token、timestamp、nonce三个参数进行字典排序;
- 将上面进行排序后的字符串拼接成一个字符串进行sha1加密;
- 将加密后的字符串与signature对比,如果相同表示这个请求来源于微信,直接原样返回echostr参数内容,验证成功。
部分代码实现如下:
公众号消息类型
公众号可以发送的消息类型主要有文本消息,图片消息,语音消息,视频消息,小视频消息,地理位置消息和链接消息。消息内容都是XML格式的。
开发前注意事项
- 微信公众号接口只支持80端口;
- 微信后台配置的URL是唯一能接收到消息和事件的入口,在公众号中的所有操作都是基于这个URL进行交互的;
- 调用所有微信接口时几乎全部使用https协议;
- 用户向公众号发送消息时,会传来OpenID,该OpenID是用户微信号加密后的值,每个用户在每个公众号中的OpenID是唯一的;
- 在开发阶段要注意报错信息,全局返回码非常重要;
- 在和微信服务器交互的时候,需要满足各个接口的规范限制,调用频率限制,也要特别注意模板消息,用户数据等敏感信息的使用规范。
access_token
使用access_token要注意两点,access_token每两个小时自动失效,需要重新获取。access_token只要更新了,之前的那个就不能用了。所以,我们的系统需要每隔两个小时启动去刷新一次票据,这样无论何时我们内部调用接口,该票据始终是最新的。为了方便频繁调用,需要把票据存储在一个地方,并且是唯一的一个地方。有了access_token以后就可以做任何接口允许的事情啦。完成请求处理需要5个步骤:
- 处理POST类型的控制力逻辑,接收XML数据包
- 解析数据包,获得数据包里的数据
- 拼装定义好的消息
- 包装成XML的格式
- 5s内返回
微信中如何引入网页
- 绑定域名
- 引入JS文件
- JS SDK初始化
SDK与公众号的区别
公众号:是微信这个原生应用中,开发的特殊账号,让很多人可以通过原生的聊天界面,与公众号互动,其实就是与我们的服务器互动。
微信的SDK:不是在公众号中直接使用的,而是在微信内置浏览器中使用的。
SDK的作用:搭建了一座桥,让我们可以在微信内置浏览器的网页中调用微信的原生应用,以实现拍照、语音、及扫一扫等功能。
主要用到的SDK接口如下:
- 基础接口:判断当前微信客户端是否支持指定JS接口,有了这个判断,你就可以大胆的在网页中使用。
- 分享接口:可以自定义分享给好友的内容,比如标题啊,封面啊,甚至是描述,这样就可以实现每个人分享出去的同一个网页内容是不同的,千人千面。
- 图像接口:最强大最实用的一个功能,如果是做微信应用的话,这个可以大大增加你的发挥空间。可以让你通过手机拍照或者相册选图级预览,甚至上传和下载,连存图片的服务器你都不用准备。
- 音频接口:除图像接口外,另外一个更强大的接口,可以录音,可以播放语音,可以上传和下载语音。
- 智能接口:提供了设备信息,获取当前的网络状况。
- 地理位置接口
- 界面操作
- 摇一摇,扫一扫