公眾號開發教程,公眾開發教程
開發和調試之殤
公眾號的開發,說簡單也簡單,說麻煩也麻煩,麻煩的不是開發過程,而是搭建開發環境的過程。不過俗話說得好,磨刀不誤砍柴工,我們有必要花點時間來研究下如何攻破公眾號的開發環。說白了,公眾號的開發就是基於HTML/CSS/JS的移動端Web App的開發,但公眾號和普通的移動Web App開發還略有不同,因為很多情況下我們會調用公眾號的介面,而只要涉及介面的請求,都必須通過內建的瀏覽器來訪問,如果我們想把請求放到PC案頭瀏覽器上運行調試,就會跳轉到一個笑臉,提醒你出錯了(圖1)。
圖1 應用無法直接在PC瀏覽器中調試
這樣的安全機制和門檻是可以理解的,因為瀏覽器在Webkit核心的基礎上擴充了很多方法,也封裝了很多介面。此路是開,此樹是栽,要想開發公眾號,你就必須從此路過。這就意味著我們沒法直接在PC瀏覽器裡開發調試公眾號的頁面。那妝媒體的開發人員們是怎麼解決這個問題的呢?首先,我們要達成一個共識,在一個小小的手機上開發調試,實在施展不開,如果我們能在PC上進行開發,有Chrome的審查元素或Firefox的Firebug這樣的利器,何愁拿不下公眾號的開發?所以我們的目標是,在PC瀏覽器中進行公眾號的開發和調試,在手機上測試結果。我們只需要兩個步驟就可以實現這樣的效果。
第一,用代理訪問伺服器
不要被“Proxy 伺服器”這個名詞嚇到了,其實我們只要有一台筆記本,或者插有無線網卡的台式機就足以搭一個代理。這一步對於開發過移動端Web應用的開發人員來說,並不陌生,可能你也猜到了,這至關重要的第一步在的公眾號開發中同樣適用,下面我就簡單敘述一下。這裡主要為Windows提供方法,Mac/Linux的方法類似,點到為止,就不著重介紹了。
把電腦設定成Proxy 伺服器
- 下載並安裝Fiddler2(如果是Windows 8,請下載Fiddler4;Mac/Linux使用者可以使用Charles/Nproxy等代理工具)。
- 安裝後配置Fiddler:Fiddler菜單→Tools→Fiddler Options→Connections,2配置。
圖2 Fiddler配置過程
綁定hosts
- 進入windows/stystem32/driver/etc/目錄。(Mac/Linux使用者的hosts目錄在/etc/下。)
- 備份hosts檔案,並用記事本修改hosts檔案,在最後追加hosts,如:203.195.198.53 app.example.com。這裡的203.195.198.53是線上環境的伺服器IP,app.example.com是公眾號所請求的域。
設定手機Proxy 伺服器
- 開始菜單→運行→cmd,開啟命令列視窗,輸入 ipconfig,找到自己的IP地址,如:192.168.2.102。
- 以iPhone為例,進入設定→無線區域網路→選中自己的網路,設定Proxy 伺服器和連接埠,3中的配置。
Android手機也有類似配置功能,不詳細說明了。
圖3 手動設定HTTP代理
原理及注意事項
- 自己的電腦一定要和手機在同一個網路內,否則手機無法串連到Proxy 伺服器。
- 當手機訪問app.example.com域的時候,會訪問Proxy 伺服器,而這個代理的hosts被設定成了我們指定的IP,所以訪問開發環境就如同在裡訪問公眾號一樣。
第二,開發設計Debug模式
如果說以上的第一點是一匹好馬,那這第二點就是一個好鞍。沒錯,好馬配上好鞍才能日行千裡。
要想在PC瀏覽器裡訪問請求公眾號介面的URL,這是不可能實現的,但是我們可以通過Debug模式繞過的介面,繼續執行介面以後的邏輯。方法有很多,需要開發人員們發揮想象,各顯神通。這裡是妝媒體的開發人員們提供的正在使用的一種方法,以供參考。
我們是通過URL後拼接參數來調起Debug模式,如:http://app.example.com/main.html?debug。
然後在代碼中判斷Debug並類比介面返回的資料,以此繞過公眾號的介面請求,這樣就可以順利地在PC瀏覽器裡開發和調試了。如:
i f ( w i n d o w . l o c a t i o n . h r e f .indexOf('?debug') > 0) {
// 類比公眾號介面返回的資料} else {
// 訪問公眾號介面}
代碼部分
公眾平台
目錄(?)[+]
訊息介面指南返回
目錄[隱藏]
- 1 簡介
- 2 申請訊息介面
- 3 網址接入
- 4 訊息推送
- 4.1 簡訊
- 4.2 圖片訊息
- 4.3 地理位置訊息
- 4.4 連結訊息
- 4.5 事件推送
- 5 訊息回複
- 5.1 回複簡訊
- 5.2 回複音樂訊息
- 5.3 回複圖文訊息
- 6 注意事項
- 7 範例程式碼
|
簡介
公眾平台訊息介面為開發人員提供了一種新的訊息處理方式。
申請訊息介面
點擊申請,填寫網址url和token,其中token可由開發人員可以任意填寫,用作產生簽名。
網址接入
公眾平台使用者提交資訊後,伺服器將發送GET請求到填寫的URL上,並且帶上四個參數:
| 參數 |
描述 |
| signature |
加密簽名 |
| timestamp |
時間戳記 |
| nonce |
隨機數 |
| echostr |
隨機字串 |
開發人員通過檢驗signature對請求進行校正(下面有校正方式)。若確認此次GET請求來自伺服器,請原樣返回echostr參數內容,則接入生效,否則接入失敗。
signature結合了開發人員填寫的token參數和請求中的timestamp參數、nonce參數。
加密/校正流程:1. 將token、timestamp、nonce三個參數進行字典序排序2. 將三個參數字串拼接成一個字串進行sha1加密3. 開發人員獲得加密後的字串可與signature對比,標識該請求來源於
訊息推送
當普通使用者向公眾帳號發訊息時,伺服器將POST該訊息到填寫的URL上。結構如下:
簡訊
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[this is a test]]></Content> <MsgId>1234567890123456</MsgId> </xml>
| 參數 |
描述 |
| ToUserName |
開發人員號 |
| FromUserName |
發送方帳號(一個OpenID) |
| CreateTime |
訊息建立時間 (整型) |
| MsgType |
text |
| Content |
簡訊內容 |
| MsgId |
訊息id,64位整型 |
圖片訊息
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>1348831860</CreateTime> <MsgType><![CDATA[image]]></MsgType> <PicUrl><![CDATA[this is a url]]></PicUrl> <MsgId>1234567890123456</MsgId> </xml>
| 參數 |
描述 |
| ToUserName |
開發人員號 |
| FromUserName |
發送方帳號(一個OpenID) |
| CreateTime |
訊息建立時間 (整型) |
| MsgType |
image |
| PicUrl |
圖片連結 |
| MsgId |
訊息id,64位整型 |
地理位置訊息
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1351776360</CreateTime><MsgType><![CDATA[location]]></MsgType><Location_X>23.134521</Location_X><Location_Y>113.358803</Location_Y><Scale>20</Scale><Label><![CDATA[位置資訊]]></Label><MsgId>1234567890123456</MsgId></xml>
| 參數 |
描述 |
| ToUserName |
開發人員號 |
| FromUserName |
發送方帳號(一個OpenID) |
| CreateTime |
訊息建立時間 (整型) |
| MsgType |
location |
| Location_X |
地理位置緯度 |
| Location_Y |
地理位置經度 |
| Scale |
地圖縮放大小 |
| Label |
地理位置資訊 |
| MsgId |
訊息id,64位整型 |
連結訊息
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1351776360</CreateTime><MsgType><![CDATA[link]]></MsgType><Title><![CDATA[公眾平台官網連結]]></Title><Description><![CDATA[公眾平台官網連結]]></Description><Url><![CDATA[url]]></Url><MsgId>1234567890123456</MsgId></xml>
| 參數 |
描述 |
| ToUserName |
接收方號 |
| FromUserName |
發送方號,若為普通使用者,則是一個OpenID |
| CreateTime |
訊息建立時間 |
| MsgType |
訊息類型,link |
| Title |
訊息標題 |
| Description |
訊息描述 |
| Url |
訊息連結 |
| MsgId |
訊息id,64位整型 |
事件推送
事件推送只支援4.5版本,目前開啟自訂菜單介面事件推送、關注與取消追蹤事件推送。其餘功能即將開放,敬請期待。
<xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[FromUser]]></FromUserName><CreateTime>123456789</CreateTime><MsgType><![CDATA[event]]></MsgType><Event><![CDATA[EVENT]]></Event><EventKey><![CDATA[EVENTKEY]]></EventKey></xml>
| 參數 |
描述 |
| ToUserName |
接收方號 |
| FromUserName |
發送方號,若為普通使用者,則是一個OpenID |
| CreateTime |
訊息建立時間 |
| MsgType |
訊息類型,event |
| Event |
事件類型,subscribe(訂閱)、unsubscribe(取消訂閱)、CLICK(自訂菜單點擊事件) |
| EventKey |
事件KEY值,與自訂菜單介面中KEY值對應 |
訊息回複
對於每一個POST請求,開發人員在響應包中返回特定xml結構,對該訊息進行響應(現支援回複文本、圖文、語音、視頻、音樂)。
伺服器在五秒內收不到響應會斷掉串連。
回複xml結構如下:
回複簡訊
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[content]]></Content> </xml>
| 參數 |
描述 |
| ToUserName |
接收方帳號(收到的OpenID) |
| FromUserName |
開發人員號 |
| CreateTime |
訊息建立時間 |
| MsgType |
text |
| Content |
回複的訊息內容,長度不超過2048位元組 |
回複音樂訊息
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[music]]></MsgType> <Music> <Title><![CDATA[TITLE]]></Title> <Description><![CDATA[DESCRIPTION]]></Description> <MusicUrl><![CDATA[MUSIC_Url]]></MusicUrl> <HQMusicUrl><![CDATA[HQ_MUSIC_Url]]></HQMusicUrl> </Music> </xml>
| 參數 |
描述 |
| ToUserName |
接收方帳號(收到的OpenID) |
| FromUserName |
開發人員號 |
| CreateTime |
訊息建立時間 |
| MsgType |
music |
| MusicUrl |
音樂連結 |
| HQMusicUrl |
高品質音樂連結,WIFI環境優先使用該連結播放音樂 |
回複圖文訊息
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[fromUser]]></FromUserName> <CreateTime>12345678</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>2</ArticleCount> <Articles> <item> <Title><![CDATA[title1]]></Title> <Description><![CDATA[description1]]></Description> <PicUrl><![CDATA[picurl]]></PicUrl> <Url><![CDATA[url]]></Url> </item> <item> <Title><![CDATA[title]]></Title> <Description><![CDATA[description]]></Description> <PicUrl><![CDATA[picurl]]></PicUrl> <Url><![CDATA[url]]></Url> </item> </Articles> </xml>
| 參數 |
描述 |
| ToUserName |
接收方帳號(收到的OpenID) |
| FromUserName |
開發人員號 |
| CreateTime |
訊息建立時間 |
| MsgType |
news |
| ArticleCount |
圖文訊息個數,限制為10條以內 |
| Articles |
多條圖文訊息資訊,預設第一個item為大圖 |
| Title |
圖文訊息標題 |
| Description |
圖文訊息描述 |
| PicUrl |
圖片連結,支援JPG、PNG格式,較好的效果為大圖640*320,小圖80*80。 |
| Url |
點擊圖文訊息跳轉連結 |
注意事項
1.使用者OpenID對一個公眾號是固定唯一的串
2.請使用80連接埠
XP會不會比98更加充分的發揮硬體的性可以,從而使遊戲運行更順暢?
作為服役十餘年的系統,它已經迎來了自己的歸宿。現在,全世界的網友不禁為這一頑強存在於microsoft十餘載的系統肅然起敬。只有不斷地探索、嘗試、創新,才能使系統運行更人性化。這一點,是XP無法與7和8.1相媲美的。
php入門教程,我想學公眾平台開發有傳一下教程要簡單易懂的
推薦2個地方:
1、php100
www.php100.com/html/shipinjiaocheng/newz/
2、LAMP兄弟連