一:如何開始
1:如果沒有公眾帳號,可以先申請一個測試帳號:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
2:登錄之后界面是這樣滴:
3:接下來,我需要准備自己的網站,然后發布自己的 URL。於是,我用 ASP.NET 寫了一個 WeixinTest.ashx,其代碼如下:
public void ProcessRequest(HttpContext context)
{
string echoStr = HttpContext.Current.Request.QueryString["echoStr"];
string signature = HttpContext.Current.Request.QueryString["signature"];
string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
string nonce = HttpContext.Current.Request.QueryString["nonce"];if (!string.IsNullOrEmpty(echoStr))
{
HttpContext.Current.Response.Write(echoStr);
HttpContext.Current.Response.End();
}
}
在自己的服務器上發布了這個網站后,我們填寫地址和 TOKEN(注意,我的測試代碼中並沒有驗證這個 TOKEN)。然后在上文圖中點擊 提交 后,得到了這個界面:
以上界面的出現即意味這提交成功。
4:用手機上微信掃一掃剛才的二維碼后發生了什么?
上面說到了這個測試的公眾號在管理端的表現,那么如果關注了它,你自己的微信發生了什么變化。是的,它出現在了你的訂閱號中。話說,一開始我以為這個測試號不是服務號呢就不能享受一些高級功能。不過,不會的,既然是測試號,就應該讓我測的快樂高興,於是,我們來看看如何生成菜單。不過,先稍后,我們首先來理清下思路,看看微信公眾號的數據流轉到底是個怎么回事。如果沒有理清這點,你就會跟我一樣,一天內都摸不清頭腦。
二:關於數據流轉
1:注冊測試帳號
注冊測試帳號,是在微信的網站上完成的,輸入 url 和 token,則表明我們已經創建了這個公眾號。
2:關注了你的公眾號的他人如何與你互動
當有人關注了這個公眾號,他首先訪問的就是這個我們在創建時刻使用的 url,沒錯,該 url 很重要。注冊的時候,微信的網站會訪問它,看它合法否。注冊成功后,該 url 就成為他人在手機上使用微信來跟你互動的唯一地址。
3:你如何推送內容給他人
這就分為兩個部分了,
第一個情形:通過在微信網站上配置信息或者調用微信接口,我們就讓我們的公眾號綁定了一些信息:如自定義菜單。這樣,當他人關注公眾號的時候,就能看到自定義菜單等信息;
第二個情形:第一種情形我們理解為配置階段,那么第二種情形就是真正的開發階段了,在這個階段,我們接收用戶的消息(text,click,view 等),然后用戶的消息,推送給用戶 text,image,網站頁面(可以跟你的 url 是一個網站,也可以是第三方網站)。
你可以推送這些信息給他人:自定義菜單
三:實例-如何生成自定義菜單
這就是上文中所說到的第一種情形。既然,它實際上跟真正的微信開發沒有多大關系,或者說你可以獨立寫段代碼來完成調用接口從而配置信息,那么好吧,我就用微信自己提供的程序吧:
記住,輸入的必須是 JSON 格式的內容,要滿足其格式要求,可以參考微信的開發者檔案。
然后我們取消之前的關注,從新再關注公眾號,就能看到這個新創建的菜單了(注意,有延遲,若不願意等,則可以換個其它的微信號關注下,就出來了)。由於我手機不能拍攝自己,這里就不出效果圖了。
3.1 關於 access_token
注意,在這里,我們還需要輸入一個 access_token,這個值我們同樣也可以使用這個接口調試工具獲得:
需要值得注意的是,該值是有失效期。
四:實例-一個真正的 url 處理程序
public void ProcessRequest(HttpContext param_context)
{
if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST")
{
using (Stream stream = HttpContext.Current.Request.InputStream)
{
Byte[] postBytes = new Byte[stream.Length];
stream.Read(postBytes, 0, (Int32)stream.Length);
Handle(Encoding.UTF8.GetString(postBytes));
}
}
else
{
Auth();
}
}
為什么要做個判斷是 POST 呢?因為申請公眾號的時候的,微信網站對這個 url 的驗證是使用 GET 進行了,那樣,我們就可以用 Auth 這個方法了,而交互,則是用 POST 進行的。接下來,我們可以開始做真正意義上的微信開發了:)~~
參考:
1:開發者檔案,http://mp.weixin.qq.com/wiki/index.php?title=%E5%BC%80%E5%8F%91%E8%80%85%E8%A7%84%E8%8C%83