公眾號(hào)服務(wù)器如何調(diào)試
公眾號(hào)服務(wù)器如何調(diào)試
公眾號(hào)服務(wù)器是怎么回事呢,那么公眾號(hào)服務(wù)器如何調(diào)試的、下面是學(xué)習(xí)啦小編收集整理的公眾號(hào)服務(wù)器如何調(diào)試,希望對(duì)大家有幫助~~
公眾號(hào)服務(wù)器的調(diào)試方法
工具/原料
電腦
微信公眾號(hào)
方法/步驟
如果我們完全依賴(lài)接收到的消息來(lái)進(jìn)行調(diào)試,那我們將受到很多的限制,比如我們只能返回指定格式的消息才能在微信應(yīng)用中看到我們回復(fù)的內(nèi)容,如果我們的服務(wù)器報(bào)錯(cuò),我們將無(wú)法知道確切的錯(cuò)誤信息,所以我們需要一個(gè)能代替微信服務(wù)器來(lái)給我們的公眾號(hào)服務(wù)器發(fā)送消息并且能顯示我們返回的任何消息格式的工具.
幸運(yùn)的是我們?cè)诰W(wǎng)上可以找到這樣一個(gè)工具`webbot-cli`,這個(gè)工具的地址是開(kāi)源的,源碼地址是: https://github.com/node-webot/webot-cli/blob/master/README.md這是一個(gè)nodejs編寫(xiě)的工具,要安裝這個(gè)工具我們首先需要安裝nodejs開(kāi)發(fā)環(huán)境.這里是nodejs的官網(wǎng) https://nodejs.org/, 按照官網(wǎng)的指示一步步安裝就OK了.安裝完成后我們可以利用`npm`工具安裝這個(gè)模擬開(kāi)發(fā)調(diào)試工具.安裝命令是: npm install webot-cli -g
安裝這個(gè)工具需要管理員權(quán)限,所以mac和linux用戶(hù)可能需要使用`sudo`.
安裝完成后我們介紹一個(gè)這個(gè)工具的使用.我們直接在命令行調(diào)用如下命令就會(huì)開(kāi)始運(yùn)行這個(gè)工具,
webot send --token weixin --des http://weixinshow001.sinaapp.com
其中`weixin` 為我們之前配置的token參數(shù),`http://weixinshow001.sinaapp.com` 為我們公眾平臺(tái)的服務(wù)器地址.大家需要把這兩個(gè)參數(shù)更改為自己的.
程序的運(yùn)行界面長(zhǎng)得是這個(gè)樣子的:
運(yùn)行成功時(shí)會(huì)回顯剛才傳進(jìn)去的url和token.這里我們簡(jiǎn)單地測(cè)試一條text消息,選中狀態(tài)下回車(chē)會(huì)進(jìn)入文本輸入界面.
我們隨便輸入一些文字,然后點(diǎn)擊回車(chē)發(fā)送.然后我們看到一個(gè)錯(cuò)誤,這是為啥呢?
原因是這樣的,這個(gè)工具并未完全按照微信官方的消息格式發(fā)送,微信官方的服務(wù)器在發(fā)送消息時(shí)并沒(méi)有在GET字段中添加`echostr`項(xiàng),而這個(gè)工具會(huì)在任意一條消息發(fā)送`echostr`字段.我們之前使用的wechat-php庫(kù)是使用這個(gè)字段來(lái)判斷是否是token驗(yàn)證特殊請(qǐng)求的,如果是token驗(yàn)證特殊請(qǐng)求就會(huì)返回echostr字段并且終止后續(xù)操作,于是造成了這個(gè)錯(cuò)誤的產(chǎn)生.現(xiàn)在我們修改一下我們的庫(kù)來(lái)兼容這個(gè)測(cè)試庫(kù).
我們打開(kāi)`Wechat.php`文件,在文件中找到`isValidateIncomingConn`函數(shù),這個(gè)函數(shù)是用來(lái)判斷這一個(gè)請(qǐng)求是否是token驗(yàn)證請(qǐng)求的.我們更改為一下內(nèi)容:
/**
* 判斷此次請(qǐng)求是否為驗(yàn)證請(qǐng)求
*
* @return boolean
*/
private function isValidateIncomingConn() {
// 新內(nèi)容,對(duì)請(qǐng)求是否有POST數(shù)據(jù)進(jìn)行判斷
// 因?yàn)閠oken驗(yàn)證請(qǐng)求是一個(gè)GET請(qǐng)求,是沒(méi)有POST數(shù)據(jù)的
return isset($_GET['echostr']) and !isset($GLOBALS['HTTP_RAW_POST_DATA']);
// 以前的判斷,只判斷了GET字段
//return isset($_GET['echostr']);
}
完成更高后上傳到SAE的服務(wù)器使之生效,然后重新在`webot`中發(fā)送文本消息,我們就可以看到正確的回顯了.
10基于這種調(diào)試方式,我們甚至可以再本地服務(wù)器上調(diào)試了!基于這種調(diào)試方式,我們甚至可以再本地服務(wù)器上調(diào)試了!基于這種調(diào)試方式,我們甚至可以再本地服務(wù)器上調(diào)試了!只要把調(diào)試工具的url參數(shù)設(shè)置成本地url就ok了.
公眾號(hào)服務(wù)器如何調(diào)試相關(guān)文章:
1.如何在本地搭建服務(wù)進(jìn)行程調(diào)試