Demo訪問地址:http://wechat.magicodes.net/app/AppDemo/WeChatOAuthTest?tenantId=1
關於公眾號如何獲取用戶信息,請參考此文檔:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html
WeChatOAuthTest演示了如何通過特性“WeChatOAuth”通過微信網頁授權獲取用戶基本信息。
1.配置權限
在開始之前,需要在開發者中心修改【網頁授權獲取用戶基本信息】,在彈出的界面輸入自己的根域名。比如:wechat.magicodes.net
如下圖所示:
2 編寫業務代碼
設置好了之后,我們開始編寫業務代碼:
//注意繼承自:AppBaseController public class AppDemoController : AppBaseController { // GET: App/AppDemo/WeChatOAuthTest [WeChatOAuth] public ActionResult WeChatOAuthTest() { return View(WeiChatUser); } }
請注意以下內容:
- AppBaseController:封裝了租戶Id獲取邏輯(支持get參數和Route參數)以及微信控制器的處理。
- WeChatOAuth:網頁授權獲取用戶基本信息特性。使用此特性后,可以通過WeiChatApplicationContext.Current.WeiChatUser獲取到用戶信息,也可以通過AppBaseController的WeiChatUser獲取。總之,使用該特性后,開發者無需關心公眾號復雜的授權並獲取信息的邏輯,而且一次獲取后,框架會自動緩存用戶信息,以優化性能以及提高頁面的加載速度。
- WeiChatUser:微信粉絲對象,取自AppBaseController,等同於WeiChatApplicationContext.Current.WeiChatUser。
關於WeiChatUser對象的定義如下:
接下來,我們需要編寫頁面代碼了。Views比較簡單,關鍵代碼如下所示:
@using Magicodes.WeiChat.Unity; @model Magicodes.WeiChat.Data.Models.WeiChat_User @{ ViewBag.Title = "WeChatOAuth測試"; } <div class="aui-content"> <ul class="aui-list-view"> <li class="aui-list-view-cell aui-img"> <img class="aui-img-object aui-pull-left" src="@Model.HeadImgUrl"> <div class="aui-img-body"> @Model.NickName <p> <span class="aui-label aui-label-default">@Model.Remark</span><br /> <span class="aui-label aui-label-primary">@Model.City</span><br /> <span class="aui-label aui-label-success">OPENID:@Model.OpenId</span><br /> <span class="aui-label aui-label-success">@(Model.Sex.GetEnumMemberDisplayName())</span><br /> <span><a href="#">查看詳細說明</a></span> </p> </div> </li> </ul> </div> @…省略若干代碼@
3 配置自定義菜單
代碼寫完了,我們需要查看相關效果。這時候,先得配置好菜單,如下所示:
4 效果圖
效果圖如下所示:
至此,整個Demo完成。
我們重新溫習一下。主要步驟如下:
1) 配置【授權回調頁面域名】
2) 繼承AppBaseController,添加特性WeChatOAuth。
3) 通過WeiChatUser獲取用戶信息
4) 配置自定義菜單
5) 用手機(電腦)微信打開頁面,查看效果