凤伟
摘 要:随着压缩综述Web2.0下微信公众平台所采用的设计方法。首先分析了微信公众平台的调用接口,调用方法及实现方法,之后研究微信公众平台开发中产生的平台基本框架,然后针对微信公众平台的安全策略进行着重说明。
关键词:微信公众平台;消息接口;基本框架;安全策略
1 引言
随着微信用户数量越来越多,微信营销也开辟了一个新的营销时代,目前微信拥有4亿用户,微信公众号的推出在免除应用开发企业注册成本的同时,进一步将应用直接与商业化运营相关联。微信公众平台多应用于企业客户管理领域,与目前流行的其他社交网络平台相比(如:微博),微信公众平台传播效率更具优势。较原始的实时消息推送或用户关键字查询等技术而言,微信公众平台更着重于不同用户的定向推送,可以对客户很好的进行归类,然后向某一类人群定时发送他们需要的信息通过这一平台,个人和企业都可以打造一个微信的公众号,可以群发文字、图片、语音、视频、图文消息五个类别的内容。
微信公众平台是腾讯公司在微信的基础上新增的功能模块[1],目前微信公众平台支持PC端网页、移动互联网客户端登录,并可以绑定私人帐号进行群发信息。微信公众平台是一个自媒体平台,它是微信系统的重要组成部分,微信整个板块包含个人微信、二维码、公众平台。在web2.0环境下,针对微信公众平台的开发有一下几点优势:1)微信用户的真实性,2)微信公共号粉丝的可控性,3)用户对于公众号的选择性。
微信公众平台支持多种业务应用,因此在开发各类型应用时都应搭建标准的开发框架,并申请相应的微信公众账号。
2 微信公众平台的消息接口及开发框架
2.1 基本原理及消息接口
微信公众平台开发接口是为微信用户提供服务的基础,开发者在公众平台网站中申请公众帐号、获取接口权限后,可以通过调用接口帮助开发。微信公众平台开发接口可与客户端进行消息交互,也可根据不同应用的需求通过接口调用自定义交互菜单。对于接入公众平台开发接口的公众账号,当用户发消息给公众号,微信公众平台服务器会使用http请求对接入的网址进行消息推送,第三方服务器可通过响应包回复特定结构[2],从而达到回复消息的目的。
其具体的流程如图2-1所示:
如图2-1所示,腾讯服务器就相当于一个转发服务器,微信用户终端(手机、Pad等)发起请求至腾讯服务器,腾讯服务器然后将请求转发给自定义服务。服务处理完毕,然后返还给腾讯服务器,腾讯服务器再将具体响应回复到用户终端。在此过程中通信协议采用HTTP,数据格式为XML。
微信公众平台所采用的核心类为WeChat类。用户向微信公众号发送消息,腾讯服务器接受消息,将数据封装成XML格式,根据路由规则将传送至第三方服务器WeiXinAction类,再通过调用WeChat类中的request方法接受并解析xml文件数据信息,做进一步业务处理。在业务处理完成之后,WeChat类中的response方法将数据封装成xml格式通过WeixinAction并返回给腾讯服务器。其中腾讯服务器与第三方服务器交互过程如图2-2所示:
目前微信公众平台开放了8类高级接口,增加开发者问答系统,并对微信公众平台的后台管理界面进行改版。此8类接口分别为:1)语音识别接口;2)客服接口;3)OAuth2.0 网页授权接口;4)生成带参数的二维码接口;5)获取用户地理位置接口;6)获取用户基本信息接口;7)获取关注者列表接口;8)用户分组接口。
2.2 微信公众平台通用开发框架
对于大多数支持多种业务的应用而言,多采用分层的方式进行功能实现。首先将复杂的系统进行分层,然后将一些功能或者特有的逻辑进行封装,封装为不同的基础服务或中间件。业务层无需关心底层具体实现,只需进行简单调用、组装,即可支撑强大的业务应用。这样保证了层级独立,也使得系统易于维护和扩展。目前常用的框架结构有MVC、MVVM等。
但是微信公众平台与以往的项目有所不同。其实现不再基于计算机底层实现。从应用层面讲,需要对业务的上层,即显示层和前端逻辑层、通信层,进行封装。从整体考虑,系统通过设计通用微信服务框架,支持所有业务。微信服务框架的改动只与微信接口的调整做相关。多个业务系统,共用同一套微信服務框架。基本框架层次设计如下图2-3所示,才开发过程中企业只需针对公众平台接入层进行自定义,而具体功能可以通过调用工具层、管理操作层、核心服务层、权限管理层等内部接口予以实现。
2.3 微信公众平台应用举例
微信公众平台中用户所面对的是类似DOS的交互方式,一维的命令行形式,通过文本交互的方式来和账号互动,诸如回复“1. xxx;2. xxx”之类,或者回复一些简单的文本,公众账号给出相应的反馈。这种交互方式加大了用户使用的难度,因此自定义菜单的提出降低了用户使用的门槛,能够支持微信消息和链接,特别是对于信息类的微信公众账号,用户能够通过简单的点击获得账号提供的最主要的信息服务。本节将介绍微信公众平台下自定义菜单功能的创建。
目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。
目前自定义菜单接口可实现两种类型按钮,如下:
⑴click:用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;
⑵view:用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的url值,即网页链接),达到打开网页的目的,建议与网页授权获取用户基本信息接口结合,获得用户的登入个人信息。
用户点击自定义菜单后,如果菜单按钮设置为click类型,则微信会把此次点击事件推送给开发者,若采用view类型的菜点击则不会上报。
下图2-4为城市天气查询自定义菜单效果图:
3 微信公众平台安全策略
尽管处理微信客户端请求的服务器,处于微信服务器的后端,但是安全问题依然是微信公众平台开发的重中之重。基于微信公众平台的应用主要存在以下二点威胁:
⑴如URL和Token被破解,直接链接到其他公众账号,直接可以盗用服务。当然对于一些广告类型账号而言,这样无利可图。但是,如果是提供某种应用或者服务的公众账号,免费给其他账号提供服务,势必增加服务端压力,带来一定的风险。
⑵如果URL被破解,即使token没被破解。一些不法分子,可能对该URL进行攻击。
对上述威胁应采取及时的手段或技术予以避免,例如:
⑴尽量保证服务的URL,与提供消息或者网页没有直接关系。以防止,根据URL推算得出服务URL。
⑵可以使用URL重定向,将一些路径信息进行隐藏。
⑶在服务中判定请求的来源,是否是微信服务器来的请求。这个可以根据请求的URL来进行判定,对于其他请求不予处理。
⑷Token值,尽量复杂一些。
4 总结
本文重点讨论了微信公众平台所采用的设计方法。总之,微信开放公众平台,为所有的社交主体提供了一个平台级的交流工具,并且让这些主体能够依托这个平台形成更直接的交流社区。
[参考文献]
[1]范丰龙.电子商务中微信服务系统设计与实现[J].商场现代化.2013,(20):101-103.
[2]李阳.微信公众平台的角色定位与功能调适[J].社会科学辑刊.2014,(2):57-61.