公眾號伺服器如何除錯

  公眾號伺服器是怎麼回事呢,那麼的、下面是小編收集整理的,希望對大家有幫助~~

  公眾號伺服器的除錯方法

  工具/原料

  電腦

  微信公眾號

  方法/步驟

  如果我們完全依賴接收到的訊息來進行除錯,那我們將受到很多的限制,比如我們只能返回指定格式的訊息才能在微信應用中看到我們回覆的內容,如果我們的伺服器報錯,我們將無法知道確切的錯誤資訊,所以我們需要一個能代替微信伺服器來給我們的公眾號伺服器傳送訊息並且能顯示我們返回的任何訊息格式的工具.

  幸運的是我們在網上可以找到這樣一個工具`webbot-cli`,這個工具的地址是開源的,原始碼地址是: , 按照官網的指示一步步安裝就OK了.安裝完成後我們可以利用`npm`工具安裝這個模擬開發除錯工具.安裝命令是: npm install webot-cli -g

  安裝這個工具需要管理員許可權,所以mac和linux使用者可能需要使用`sudo`.

  安裝完成後我們介紹一個這個工具的使用.我們直接在命令列呼叫如下命令就會開始執行這個工具,

  webot send --token weixin --des

  其中`weixin` 為我們之前配置的token引數,`` 為我們公眾平臺的伺服器地址.大家需要把這兩個引數更改為自己的.

  程式的執行介面長得是這個樣子的:

  執行成功時會回顯剛才傳進去的url和token.這裡我們簡單地測試一條text訊息,選中狀態下回車會進入文字輸入介面.

  我們隨便輸入一些文字,然後點選回車傳送.然後我們看到一個錯誤,這是為啥呢?

  原因是這樣的,這個工具並未完全按照微信官方的訊息格式傳送,微信官方的伺服器在傳送訊息時並沒有在GET欄位中新增`echostr`項,而這個工具會在任意一條訊息傳送`echostr`欄位.我們之前使用的wechat-php庫是使用這個欄位來判斷是否是token驗證特殊請求的,如果是token驗證特殊請求就會返回echostr欄位並且終止後續操作,於是造成了這個錯誤的產生.現在我們修改一下我們的庫來相容這個測試庫.

  我們開啟`Wechat.php`檔案,在檔案中找到`isValidateIncomingConn`函式,這個函式是用來判斷這一個請求是否是token驗證請求的.我們更改為一下內容:

  /**

  * 判斷此次請求是否為驗證請求

  *

  * @return boolean

  */

  private function isValidateIncomingConn****** {

  // 新內容,對請求是否有POST資料進行判斷

  // 因為token驗證請求是一個GET請求,是沒有POST資料的

  return isset***$_GET['echostr']*** and !isset***$GLOBALS['HTTP_RAW_POST_DATA']***;

  // 以前的判斷,只判斷了GET欄位

  //return isset***$_GET['echostr']***;

  }

  完成更高後上傳到SAE的伺服器使之生效,然後重新在`webot`中傳送文字訊息,我們就可以看到正確的回顯了.

  10基於這種除錯方式,我們甚至可以再本地伺服器上除錯了!基於這種除錯方式,我們甚至可以再本地伺服器上除錯了!基於這種除錯方式,我們甚至可以再本地伺服器上除錯了!只要把除錯工具的url引數設定成本地url就ok了.