鳳偉
摘 要:隨著壓縮綜述Web2.0下微信公眾平臺(tái)所采用的設(shè)計(jì)方法。首先分析了微信公眾平臺(tái)的調(diào)用接口,調(diào)用方法及實(shí)現(xiàn)方法,之后研究微信公眾平臺(tái)開發(fā)中產(chǎn)生的平臺(tái)基本框架,然后針對(duì)微信公眾平臺(tái)的安全策略進(jìn)行著重說明。
關(guān)鍵詞:微信公眾平臺(tái);消息接口;基本框架;安全策略
1 引言
隨著微信用戶數(shù)量越來越多,微信營銷也開辟了一個(gè)新的營銷時(shí)代,目前微信擁有4億用戶,微信公眾號(hào)的推出在免除應(yīng)用開發(fā)企業(yè)注冊(cè)成本的同時(shí),進(jìn)一步將應(yīng)用直接與商業(yè)化運(yùn)營相關(guān)聯(lián)。微信公眾平臺(tái)多應(yīng)用于企業(yè)客戶管理領(lǐng)域,與目前流行的其他社交網(wǎng)絡(luò)平臺(tái)相比(如:微博),微信公眾平臺(tái)傳播效率更具優(yōu)勢(shì)。較原始的實(shí)時(shí)消息推送或用戶關(guān)鍵字查詢等技術(shù)而言,微信公眾平臺(tái)更著重于不同用戶的定向推送,可以對(duì)客戶很好的進(jìn)行歸類,然后向某一類人群定時(shí)發(fā)送他們需要的信息通過這一平臺(tái),個(gè)人和企業(yè)都可以打造一個(gè)微信的公眾號(hào),可以群發(fā)文字、圖片、語音、視頻、圖文消息五個(gè)類別的內(nèi)容。
微信公眾平臺(tái)是騰訊公司在微信的基礎(chǔ)上新增的功能模塊[1],目前微信公眾平臺(tái)支持PC端網(wǎng)頁、移動(dòng)互聯(lián)網(wǎng)客戶端登錄,并可以綁定私人帳號(hào)進(jìn)行群發(fā)信息。微信公眾平臺(tái)是一個(gè)自媒體平臺(tái),它是微信系統(tǒng)的重要組成部分,微信整個(gè)板塊包含個(gè)人微信、二維碼、公眾平臺(tái)。在web2.0環(huán)境下,針對(duì)微信公眾平臺(tái)的開發(fā)有一下幾點(diǎn)優(yōu)勢(shì):1)微信用戶的真實(shí)性,2)微信公共號(hào)粉絲的可控性,3)用戶對(duì)于公眾號(hào)的選擇性。
微信公眾平臺(tái)支持多種業(yè)務(wù)應(yīng)用,因此在開發(fā)各類型應(yīng)用時(shí)都應(yīng)搭建標(biāo)準(zhǔn)的開發(fā)框架,并申請(qǐng)相應(yīng)的微信公眾賬號(hào)。
2 微信公眾平臺(tái)的消息接口及開發(fā)框架
2.1 基本原理及消息接口
微信公眾平臺(tái)開發(fā)接口是為微信用戶提供服務(wù)的基礎(chǔ),開發(fā)者在公眾平臺(tái)網(wǎng)站中申請(qǐng)公眾帳號(hào)、獲取接口權(quán)限后,可以通過調(diào)用接口幫助開發(fā)。微信公眾平臺(tái)開發(fā)接口可與客戶端進(jìn)行消息交互,也可根據(jù)不同應(yīng)用的需求通過接口調(diào)用自定義交互菜單。對(duì)于接入公眾平臺(tái)開發(fā)接口的公眾賬號(hào),當(dāng)用戶發(fā)消息給公眾號(hào),微信公眾平臺(tái)服務(wù)器會(huì)使用http請(qǐng)求對(duì)接入的網(wǎng)址進(jìn)行消息推送,第三方服務(wù)器可通過響應(yīng)包回復(fù)特定結(jié)構(gòu)[2],從而達(dá)到回復(fù)消息的目的。
其具體的流程如圖2-1所示:
如圖2-1所示,騰訊服務(wù)器就相當(dāng)于一個(gè)轉(zhuǎn)發(fā)服務(wù)器,微信用戶終端(手機(jī)、Pad等)發(fā)起請(qǐng)求至騰訊服務(wù)器,騰訊服務(wù)器然后將請(qǐng)求轉(zhuǎn)發(fā)給自定義服務(wù)。服務(wù)處理完畢,然后返還給騰訊服務(wù)器,騰訊服務(wù)器再將具體響應(yīng)回復(fù)到用戶終端。在此過程中通信協(xié)議采用HTTP,數(shù)據(jù)格式為XML。
微信公眾平臺(tái)所采用的核心類為WeChat類。用戶向微信公眾號(hào)發(fā)送消息,騰訊服務(wù)器接受消息,將數(shù)據(jù)封裝成XML格式,根據(jù)路由規(guī)則將傳送至第三方服務(wù)器WeiXinAction類,再通過調(diào)用WeChat類中的request方法接受并解析xml文件數(shù)據(jù)信息,做進(jìn)一步業(yè)務(wù)處理。在業(yè)務(wù)處理完成之后,WeChat類中的response方法將數(shù)據(jù)封裝成xml格式通過WeixinAction并返回給騰訊服務(wù)器。其中騰訊服務(wù)器與第三方服務(wù)器交互過程如圖2-2所示:
目前微信公眾平臺(tái)開放了8類高級(jí)接口,增加開發(fā)者問答系統(tǒng),并對(duì)微信公眾平臺(tái)的后臺(tái)管理界面進(jìn)行改版。此8類接口分別為:1)語音識(shí)別接口;2)客服接口;3)OAuth2.0 網(wǎng)頁授權(quán)接口;4)生成帶參數(shù)的二維碼接口;5)獲取用戶地理位置接口;6)獲取用戶基本信息接口;7)獲取關(guān)注者列表接口;8)用戶分組接口。
2.2 微信公眾平臺(tái)通用開發(fā)框架
對(duì)于大多數(shù)支持多種業(yè)務(wù)的應(yīng)用而言,多采用分層的方式進(jìn)行功能實(shí)現(xiàn)。首先將復(fù)雜的系統(tǒng)進(jìn)行分層,然后將一些功能或者特有的邏輯進(jìn)行封裝,封裝為不同的基礎(chǔ)服務(wù)或中間件。業(yè)務(wù)層無需關(guān)心底層具體實(shí)現(xiàn),只需進(jìn)行簡單調(diào)用、組裝,即可支撐強(qiáng)大的業(yè)務(wù)應(yīng)用。這樣保證了層級(jí)獨(dú)立,也使得系統(tǒng)易于維護(hù)和擴(kuò)展。目前常用的框架結(jié)構(gòu)有MVC、MVVM等。
但是微信公眾平臺(tái)與以往的項(xiàng)目有所不同。其實(shí)現(xiàn)不再基于計(jì)算機(jī)底層實(shí)現(xiàn)。從應(yīng)用層面講,需要對(duì)業(yè)務(wù)的上層,即顯示層和前端邏輯層、通信層,進(jìn)行封裝。從整體考慮,系統(tǒng)通過設(shè)計(jì)通用微信服務(wù)框架,支持所有業(yè)務(wù)。微信服務(wù)框架的改動(dòng)只與微信接口的調(diào)整做相關(guān)。多個(gè)業(yè)務(wù)系統(tǒng),共用同一套微信服務(wù)框架。基本框架層次設(shè)計(jì)如下圖2-3所示,才開發(fā)過程中企業(yè)只需針對(duì)公眾平臺(tái)接入層進(jìn)行自定義,而具體功能可以通過調(diào)用工具層、管理操作層、核心服務(wù)層、權(quán)限管理層等內(nèi)部接口予以實(shí)現(xiàn)。
2.3 微信公眾平臺(tái)應(yīng)用舉例
微信公眾平臺(tái)中用戶所面對(duì)的是類似DOS的交互方式,一維的命令行形式,通過文本交互的方式來和賬號(hào)互動(dòng),諸如回復(fù)“1. xxx;2. xxx”之類,或者回復(fù)一些簡單的文本,公眾賬號(hào)給出相應(yīng)的反饋。這種交互方式加大了用戶使用的難度,因此自定義菜單的提出降低了用戶使用的門檻,能夠支持微信消息和鏈接,特別是對(duì)于信息類的微信公眾賬號(hào),用戶能夠通過簡單的點(diǎn)擊獲得賬號(hào)提供的最主要的信息服務(wù)。本節(jié)將介紹微信公眾平臺(tái)下自定義菜單功能的創(chuàng)建。
目前自定義菜單最多包括3個(gè)一級(jí)菜單,每個(gè)一級(jí)菜單最多包含5個(gè)二級(jí)菜單。一級(jí)菜單最多4個(gè)漢字,二級(jí)菜單最多7個(gè)漢字,多出來的部分將會(huì)以“...”代替。請(qǐng)注意,創(chuàng)建自定義菜單后,由于微信客戶端緩存,需要24小時(shí)微信客戶端才會(huì)展現(xiàn)出來。建議測(cè)試時(shí)可以嘗試取消關(guān)注公眾賬號(hào)后再次關(guān)注,則可以看到創(chuàng)建后的效果。
目前自定義菜單接口可實(shí)現(xiàn)兩種類型按鈕,如下:
⑴click:用戶點(diǎn)擊click類型按鈕后,微信服務(wù)器會(huì)通過消息接口推送消息類型為event的結(jié)構(gòu)給開發(fā)者(參考消息接口指南),并且?guī)习粹o中開發(fā)者填寫的key值,開發(fā)者可以通過自定義的key值與用戶進(jìn)行交互;
⑵view:用戶點(diǎn)擊view類型按鈕后,微信客戶端將會(huì)打開開發(fā)者在按鈕中填寫的url值,即網(wǎng)頁鏈接),達(dá)到打開網(wǎng)頁的目的,建議與網(wǎng)頁授權(quán)獲取用戶基本信息接口結(jié)合,獲得用戶的登入個(gè)人信息。
用戶點(diǎn)擊自定義菜單后,如果菜單按鈕設(shè)置為click類型,則微信會(huì)把此次點(diǎn)擊事件推送給開發(fā)者,若采用view類型的菜點(diǎn)擊則不會(huì)上報(bào)。
下圖2-4為城市天氣查詢自定義菜單效果圖:
3 微信公眾平臺(tái)安全策略
盡管處理微信客戶端請(qǐng)求的服務(wù)器,處于微信服務(wù)器的后端,但是安全問題依然是微信公眾平臺(tái)開發(fā)的重中之重?;谖⑿殴娖脚_(tái)的應(yīng)用主要存在以下二點(diǎn)威脅:
⑴如URL和Token被破解,直接鏈接到其他公眾賬號(hào),直接可以盜用服務(wù)。當(dāng)然對(duì)于一些廣告類型賬號(hào)而言,這樣無利可圖。但是,如果是提供某種應(yīng)用或者服務(wù)的公眾賬號(hào),免費(fèi)給其他賬號(hào)提供服務(wù),勢(shì)必增加服務(wù)端壓力,帶來一定的風(fēng)險(xiǎn)。
⑵如果URL被破解,即使token沒被破解。一些不法分子,可能對(duì)該URL進(jìn)行攻擊。
對(duì)上述威脅應(yīng)采取及時(shí)的手段或技術(shù)予以避免,例如:
⑴盡量保證服務(wù)的URL,與提供消息或者網(wǎng)頁沒有直接關(guān)系。以防止,根據(jù)URL推算得出服務(wù)URL。
⑵可以使用URL重定向,將一些路徑信息進(jìn)行隱藏。
⑶在服務(wù)中判定請(qǐng)求的來源,是否是微信服務(wù)器來的請(qǐng)求。這個(gè)可以根據(jù)請(qǐng)求的URL來進(jìn)行判定,對(duì)于其他請(qǐng)求不予處理。
⑷Token值,盡量復(fù)雜一些。
4 總結(jié)
本文重點(diǎn)討論了微信公眾平臺(tái)所采用的設(shè)計(jì)方法。總之,微信開放公眾平臺(tái),為所有的社交主體提供了一個(gè)平臺(tái)級(jí)的交流工具,并且讓這些主體能夠依托這個(gè)平臺(tái)形成更直接的交流社區(qū)。
[參考文獻(xiàn)]
[1]范豐龍.電子商務(wù)中微信服務(wù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].商場現(xiàn)代化.2013,(20):101-103.
[2]李陽.微信公眾平臺(tái)的角色定位與功能調(diào)適[J].社會(huì)科學(xué)輯刊.2014,(2):57-61.