C#微信公眾號開發(fā)之用戶管理
前言:
微信公眾號提供了用戶和用戶組的管理,我們可以在微信公眾號官方里面進行操作,添加備注和標(biāo)簽,以及移動用戶組別,同時,微信公眾號提供了相應(yīng)的接口方便我們調(diào)用,可方便的把用戶同步到本地,這樣我們可以自己為用戶定義更多的信息,以及與本地的業(yè)務(wù)更好的對接起來。以方便做各種應(yīng)用分析。所以本節(jié)內(nèi)容主要是用戶和用戶組的管理。
開始:
一、用戶關(guān)注與退訂事件:
在之前的消息處理中,我們在UserMessageHandler.cs,需要繼承Senparc.Weixin.MP.MessageHandlers<TC>這個抽象類,并重寫所有方法,在這里面,我們可以添加2個事件,一個是用戶關(guān)注時候觸發(fā)事件,一個是退訂時候觸發(fā)事件
public override IResponseMessageBase OnEvent_ScanRequest(RequestMessageEvent_Scan requestMessage) { //通過掃描關(guān)注 var responseMessage = CreateResponseMessage<ResponseMessageText>(); responseMessage.Content = responseMessage.Content ?? string.Format("通過掃描二維碼進入,場景值:{0}", requestMessage.EventKey); return responseMessage; } /// <summary> /// 訂閱(關(guān)注)事件 /// </summary> /// <returns></returns> public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage) { var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); responseMessage.Content = "歡迎關(guān)注"; return responseMessage; } /// <summary> /// 退訂 /// 實際上用戶無法收到非訂閱賬號的消息,所以這里可以隨便寫。 /// unsubscribe事件的意義在于及時刪除網(wǎng)站應(yīng)用中已經(jīng)記錄的OpenID綁定,消除冗余數(shù)據(jù)。并且關(guān)注用戶流失的情況。 /// </summary> /// <returns></returns> public override IResponseMessageBase OnEvent_UnsubscribeRequest(RequestMessageEvent_Unsubscribe requestMessage) { var responseMessage = base.CreateResponseMessage<ResponseMessageText>(); responseMessage.Content = "有空再來"; return responseMessage; }
二、設(shè)計數(shù)據(jù)庫
根據(jù)微信公眾號開發(fā)文檔,用戶管理對應(yīng)字段而建立,基本與官方提供的用戶信息是一樣的
建立用戶組管理表(WX_Group)和用戶表(WX_User)
三、提交同步數(shù)據(jù)
接口的實現(xiàn)方式我們使用了開源的Senparc.Weixin提供的專業(yè)的微信操作SDK來快速完成操作,在Senparc WX SDK下的Senparc.Weixin.MP.AdvancedAPIs ,通過OpenID到公眾號同步到數(shù)據(jù),再將本地數(shù)據(jù)修改。
/// <summary> /// 同步數(shù)據(jù) /// </summary> /// <param name="id">用戶id</param> /// <param name="officeId">對應(yīng)的公眾號id</param> /// <returns></returns> [HttpPost] [SupportFilter] public JsonResult SyncUser(string id,string officeId) { if (!string.IsNullOrWhiteSpace(id)) { //填充數(shù)據(jù) string[] arrs = id.Split(','); List<BatchGetUserInfoData> list = new List<BatchGetUserInfoData>(); foreach (var m in arrs) { list.Add(new BatchGetUserInfoData() { openid = m, lang = "zh-CN", LangEnum = Senparc.Weixin.Language.zh_CN }); } //批量同步數(shù)據(jù) WC_OfficalAccountsModel accountModel = account_BLL.GetById(officeId); var batchList = Senparc.Weixin.MP.AdvancedAPIs.UserApi.BatchGetUserInfo(accountModel.AccessToken, list); foreach (var info in batchList.user_info_list) { WC_UserModel userModel = m_BLL.GetById(info.openid); if (userModel != null) { userModel.City = info.city; userModel.OpenId = info.openid; userModel.Id = info.openid; userModel.HeadImgUrl = info.headimgurl; userModel.Language = info.language; userModel.NickName = info.nickname; userModel.Province = info.province; userModel.Sex = info.sex; m_BLL.Edit(ref errors, userModel); } } LogHandler.WriteServiceLog(GetUserId(), "Ids:" + id, "成功", "刪除", "WX_User"); return Json(JsonHandler.CreateMessage(1, Resource.SaveSucceed)); } else { return Json(JsonHandler.CreateMessage(0, Resource.SaveFail)); } }
通過以上方式,將用戶和分組的方式同步提交,實現(xiàn)用戶的分組。
總結(jié):
1.實現(xiàn)用戶的分組,能更好的對關(guān)注者進行管理和分析業(yè)務(wù)應(yīng)用
2.使用了開源的Senparc.Weixin,可以快速的實現(xiàn)分組和同步數(shù)據(jù)
3.參考官網(wǎng)示例源代碼
到此這篇關(guān)于C#微信公眾號開發(fā)之用戶管理的文章就介紹到這了。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C# Winform調(diào)用百度接口實現(xiàn)人臉識別教程(附源碼)
這篇文章主要介紹了C# Winform調(diào)用百度接口實現(xiàn)人臉識別教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05LINQ基礎(chǔ)之Intersect、Except和Distinct子句
這篇文章介紹了LINQ使用Intersect、Except和Distinct子句的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-04-04DataGridView實現(xiàn)點擊列頭升序和降序排序
這篇文章介紹了DataGridView實現(xiàn)點擊列頭升序和降序排序的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02vista和win7在windows服務(wù)中交互桌面權(quán)限問題解決方法:穿透Session 0 隔離
服務(wù)(Service)對于大家來說一定不會陌生,它是Windows 操作系統(tǒng)重要的組成部分。我們可以把服務(wù)想像成一種特殊的應(yīng)用程序,它隨系統(tǒng)的“開啟~關(guān)閉”而“開始~停止”其工作內(nèi)容,在這期間無需任何用戶參與2016-04-04C#實現(xiàn)將RTF轉(zhuǎn)為HTML的示例代碼
RTF文檔即富文本格式(Rich?Text?Format)的文檔。我們在處理文件時,遇到需要對文檔格式進行轉(zhuǎn)換時,可以將RTF轉(zhuǎn)為其他格式,如轉(zhuǎn)為DOCX/DOC、PDF或者HTML。本文將利用C#實現(xiàn)RTF轉(zhuǎn)HTML,需要的可以參考一下2022-04-04Unity UGUI的ContentSizeFitter內(nèi)容尺寸適應(yīng)器組件使用示例
這篇文章主要為大家介紹了Unity UGUI的ContentSizeFitter內(nèi)容尺寸適應(yīng)器組件使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08C#實現(xiàn)類似新浪微博長URL轉(zhuǎn)短地址的方法
這篇文章主要介紹了C#實現(xiàn)類似新浪微博長URL轉(zhuǎn)短地址的方法,涉及C#操作正則表達(dá)式的相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下2015-04-04