天天看點

C#開發微信門戶及應用(14)-在微信菜單中采用重定向擷取使用者資料

我們知道,微信的自定義菜單分為兩大類,分别對應Click類型和View類型的,而重定向屬于View類型的一種,如下所示。

C#開發微信門戶及應用(14)-在微信菜單中采用重定向擷取使用者資料

微信重定向的菜單,就是通過傳入一個位址參數,讓微信伺服器進行跳轉,它的主要規則如下所示。

對于scope=snsapi_base方式的連結如下:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3d81fc2886d86526&redirect_uri=http%3A%2F%2Fwww.iqidi.com%2Ftestwx.ashx&response_type=code&scope=snsapi_base&state=123#wechat_redirect 

而對于scope=snsapi_userinfo方式的連結如下:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx3d81fc2886d86526&redirect_uri=http%3A%2F%2Fwww.iqidi.com%2Ftestwx.ashx&response_type=code&scope=snsapi_userinfo&state=123#wechat_redirect

這兩個菜單連結主要就是對我們給定的連結位址進行UrlEncode處理,然後把它指派給參數redirect_uri實作的。

由于連結位址比較長,如果每次需要在配置菜單的時候,都複制過來修改,非常不友善,我們可以在自定義菜單的配置界面裡面,增加一個按鈕功能,對内容進行處理,以便實作我們需要的位址轉換,我的門戶應用平台對自定義菜單的操作就是基于這個思路實作。

預設我們隻需要填寫一個需要重定向的url位址就可以了,如下所示。

C#開發微信門戶及應用(14)-在微信菜單中采用重定向擷取使用者資料

如果需要配置成重定向的菜單連結位址,那麼調用【轉換重定向菜單】按鈕操作,使用腳本函數進行轉換就可以了,轉換後的結果如下所示。

C#開發微信門戶及應用(14)-在微信菜單中采用重定向擷取使用者資料

原來就是利用背景的javascript實作參數的URL轉碼,還需要擷取背景的AppId,這樣才能構造成完整的位址連接配接。

前面說了,第一是需要實作URL轉碼,第二是擷取背景的AppId,然後生成一個完整的URL就可以了。為了避免大家的重複研究,我把這部分代碼貼出來一起學習下。

在使用前,我們還需要注意一個問題,就是重定向到指定頁面後,這個頁面會帶有一個code的參數,這個參數非常重要,我們需要擷取出來,當然也是通過javascript來擷取對應的code參數了。

這個邏輯可以用一個腳本函數來實作,如下所示

定義了這個函數後,我們在重定向的頁面裡面,可以擷取code參數的操作如下所示。

先放下這些,我們先來讨論如何把連結位址轉換為需要的連結位址操作。

我們為了實作連結位址的互相轉換(為了友善),我們可以判斷連結位址是否含有qq的域名就可以了。

而如果是我們輸入的正常連結,那麼就應該把它轉換為重定向的連結位址,如下所示。

其中重定向連結需要帶有一個目前微信開發使用者的appId,這個不是固定的,是不同的開發人員都不一樣的東西,這裡使用了MVC的動态對象進行綁定:@ViewBag.appid。

在對應的MenuController控制器裡面,給它指派就可以了。

這樣配置後的重定向菜單位址清單就如下所示了,我們打開對應的記錄詳細頁面,可以通過頁面裡面的功能按鈕,随時對重定向菜單的位址進行轉換,友善了解詳細的連結内容。

C#開發微信門戶及應用(14)-在微信菜單中采用重定向擷取使用者資料

配置了上面的連結位址後,我們需要在網站裡面增加這樣的一個頁面進行處理使用者的資訊,一般情況下,我們可能是為了友善使用者檢視自己的微信基礎資訊,也為了給使用者綁定使用者個人資料使用的用途的,如使用者可以綁定手機、Email郵箱等操作,還可以綁定和業務系統相關的使用者名。這樣使用者就可以快速注冊會員或者和背景的系統進行關聯了。

我設計的兩個使用者資訊展示界面如下所示。

這兩個界面主要使用了Jquery Mobile的相關内容,對界面進行了處理,整個子產品結合了短信驗證碼的方式,對使用者的手機進行驗證處理,這樣能夠更高效的實作資訊準确的綁定操作,當然,還可以結合外部系統,綁定使用者的賬号密碼,這樣使用者可以在微信進入微網站平台進行購物、資料維護、業務管理等操作了,其實一旦綁定外部系統的ID,也就是提供了一個快速進行外部系統的入口了。

C#開發微信門戶及應用(14)-在微信菜單中采用重定向擷取使用者資料
C#開發微信門戶及應用(14)-在微信菜單中采用重定向擷取使用者資料

具體的内容在下一篇繼續介紹了。 

如果對這個《C#開發微信門戶及應用》系列感興趣,可以關注我的其他文章,系列随筆如下所示:

<a href="http://www.cnblogs.com/wuhuacong/p/3995678.html">C#開發微信門戶及應用(20)-微信企業号的菜單管理</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3995494.html">C#開發微信門戶及應用(19)-微信企業号的消息發送(文本、圖檔、檔案、語音、視訊、圖文消息等)</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3995484.html">C#開發微信門戶及應用(18)-微信企業号的通訊錄管理開發之成員管理</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3992230.html">C#開發微信門戶及應用(17)-微信企業号的通訊錄管理開發之部門管理</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3991735.html">C#開發微信門戶及應用(16)-微信企業号的配置和使用</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3988858.html">C#開發微信門戶及應用(15)-微信菜單增加掃一掃、發圖檔、發地理位置功能</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3778972.html">C#開發微信門戶及應用(14)-在微信菜單中采用重定向擷取使用者資料</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3756347.html">C#開發微信門戶及應用(13)-使用地理位置擴充相關應用</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3753834.html">C#開發微信門戶及應用(12)-使用語音處理</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3735739.html">C#開發微信門戶及應用(11)--微信菜單的多種表現方式介紹</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3735671.html">C#開發微信門戶及應用(10)--在管理系統中同步微信使用者分組資訊</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3734614.html">C#開發微信門戶及應用(9)-微信門戶菜單管理及送出到微信伺服器</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3733189.html">C#開發微信門戶及應用(8)-微信門戶應用管理系統功能介紹</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3732902.html">C#開發微信門戶及應用(7)-微信多客服功能及開發內建</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3701961.html">C#開發微信門戶及應用(6)--微信門戶菜單的管理操作</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3695351.html">C#開發微信門戶及應用(5)--使用者分組資訊管理</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3695213.html">C#開發微信門戶及應用(4)--關注使用者清單及詳細資訊管理</a>

<a href="http://www.cnblogs.com/wuhuacong/p/3622636.html">C#開發微信門戶及應用(3)--文本消息和圖文消息的應答</a>

繼續閱讀