?前面一篇隨筆企業(yè)號的一些基礎信息,以及介紹如何配置企業(yè)號的回調(diào)方式實現(xiàn)和企業(yè)號服務器進行溝通的橋梁。本篇主要還是繼續(xù)介紹企業(yè)號的開發(fā)工作的開展,介紹微信企業(yè)號通訊錄管理開發(fā)功能,介紹其中組織機構里面如何獲取和管理部門的信息等內(nèi)容。
?1、企業(yè)組織的創(chuàng)建和配置
首先我們可以在企業(yè)號的管理后臺里面創(chuàng)建一個組織機構,里面創(chuàng)建一些部門和人員列表,方便我們開發(fā)和使用。
例如創(chuàng)建一個廣州愛奇迪的根結構,然后在其中在創(chuàng)建一些組織機構,如下圖所示。
然后給組織結構根節(jié)點“廣州愛奇迪”增加一個管理員權限,以后再開發(fā)接口里面也就可以使用這個管理員所屬的權限Secret值進行調(diào)用了。
CorpID是企業(yè)號的標識,每個企業(yè)號擁有一個唯一的CorpID;Secret是管理組憑證密鑰。
系統(tǒng)管理員可通過管理端的權限管理功能創(chuàng)建管理組,分配管理組對應用、通訊錄、接口的訪問權限。完成后,管理組即可獲得唯一的secret。系統(tǒng)管理員可通過權限管理查看所有管理組的secret,其他管理員可通過設置中的開發(fā)者憑據(jù)查看。
我的企業(yè)號的創(chuàng)建者和“廣州愛奇迪”組織結構的管理員是不同的,由于Secret是管理組憑證密鑰,因此管理者負責不同的組織機構管理的話,自己的管理Secret值可能就不同了。如果我們需要調(diào)用接口,就需要用到這個屬于自己權限級別的Secret值,如下圖所示。
?如果不是企業(yè)號的創(chuàng)建者,那么可能不能修改里面的一些權限分配,只能查看。
2、API訪問的全局唯一票據(jù)AccessToken的獲取
和公眾號一樣,我們調(diào)用企業(yè)號API的第一步也是需要先獲取訪問的票據(jù)AccessToken。這個票據(jù)是全局性的,有一定的時效和頻率控制,因此需要適當?shù)倪M行緩存,不能每次調(diào)用都去刷新獲取。
企業(yè)號獲取訪問票據(jù)的主要的邏輯代碼如下所示,其主要的就是需要使用管理者的Secret值去獲取對應的口令,這樣它就能夠知道管理的是那個組織結構的了。
????????///?<summary> ????????///?獲取每次操作微信API的Token訪問令牌????????///?</summary> ????????///?<param name="corpid">企業(yè)Id</param> ????????///?<param name="corpsecret">管理組的憑證密鑰</param> ????????///?<returns></returns> ????????public?string?GetAccessTokenNoCache(string?corpid,?string?corpsecret) ????????{????????????var?url?=?string.Format("http://m.miracleart.cn/{0}&corpsecret={1}", ????????????????????????????????????corpid,?corpsecret); ????????????HttpHelper?helper?=?new?HttpHelper();????????????string?result?=?helper.GetHtml(url);????????????string?regex?=?"\"access_token\":\"(?<token>.*?)\"";????????????string?token?=?CRegex.GetText(result,?regex,?"token");????????????return?token; ????????}
微信企業(yè)號的說明如下所示:
當企業(yè)應用調(diào)用企業(yè)號接口時,企業(yè)號后臺為根據(jù)此次訪問的AccessToken,校驗訪問的合法性以及所對應的管理組的管理權限以返回相應的結果。
注:你應該審慎配置管理組的權限,夠用即好,權限過大會增加誤操作可能性及信息安全隱患。
AccessToken是企業(yè)號的全局唯一票據(jù),調(diào)用接口時需攜帶AccessToken。AccessToken需要用CorpID和Secret來換取,不同的Secret會返回不同的AccessToken。正常情況下AccessToken有效期為7200秒,有效期內(nèi)重復獲取返回相同結果,并自動續(xù)期。由于獲取access_token的api調(diào)用次數(shù)非常有限,建議企業(yè)全局存儲與更新access_token,頻繁刷新access_token會導致api調(diào)用受限,影響自身業(yè)務。
?
2、通訊錄管理之部門信息的維護
有了第一節(jié)里面的訪問票據(jù),我們就可以利用API來做很多事情了,包括組織結構的獲取、創(chuàng)建、刪除等等功能。
創(chuàng)建部門的官方接口定義如下所示。
請求說明
Https請求方式: POST
http://m.miracleart.cn/
請求包結構體為:
{ ???"name":?"郵箱產(chǎn)品組", ???"parentid":?"1" }
參數(shù)說明
參數(shù) | 必須 | 說明 |
---|---|---|
access_token | 是 | 調(diào)用接口憑證 |
name | 是 | 部門名稱。長度限制為1~64個字符 |
parentid | 是 | 父親部門id。根部門id為1 |
?
返回結果
{ ???"errcode":?0, ???"errmsg":?"created", ???"id":?2 }
根據(jù)上面的一些類似的接口定義說明,我們先來定義下組織機構部門數(shù)據(jù)的維護接口,然后在逐步實現(xiàn)和調(diào)用。
????????#region?部門管理????????///?<summary> ????????///?創(chuàng)建部門。????????///?管理員須擁有“操作通訊錄”的接口權限,以及父部門的管理權限。????????///?</summary> ????????CorpDeptCreateJson?CreateDept(string?accessToken,?string?name,?string?parentId);????????///?<summary> ????????///?更新部門。????????///?管理員須擁有“操作通訊錄”的接口權限,以及該部門的管理權限。????????///?</summary> ????????CommonResult?DeleteDept(string?accessToken,?int?id);????????///?<summary> ????????///?刪除部門.????????///?管理員須擁有“操作通訊錄”的接口權限,以及該部門的管理權限。????????///?</summary> ????????CorpDeptListJson?ListDept(string?accessToken);????????///?<summary> ????????///?獲取部門列表.????????///?管理員須擁有’獲取部門列表’的接口權限,以及對部門的查看權限。????????///?</summary> ????????CommonResult?UpdateDept(string?accessToken,?int?id,?string?name);? ????????#endregion
如創(chuàng)建部門的接口實現(xiàn)如下所示,主要就是構建URL和POST的數(shù)據(jù)包,然后統(tǒng)一調(diào)用并獲取返回數(shù)據(jù),轉(zhuǎn)換為具體的Json對象實體即可。其他接口的實現(xiàn)方式類似,不在贅述。
????????///?<summary> ????????///?創(chuàng)建部門。????????///?管理員須擁有“操作通訊錄”的接口權限,以及父部門的管理權限。????????///?</summary> ????????public?CorpDeptCreateJson?CreateDept(string?accessToken,?string?name,?string?parentId) ????????{????????????string?urlFormat?=?"http://m.miracleart.cn/{0}";????????????var?data?=?new ????????????{ ????????????????name?=?name, ????????????????parentId?=?parentId ????????????};????????????var?url?=?string.Format(urlFormat,?accessToken);????????????var?postData?=?data.ToJson(); ????????????CorpDeptCreateJson?result?=?CorpJsonHelper<CorpDeptCreateJson>.ConvertJson(url,?postData);????????????return?result; ????????}
CorpDeptCreateJson 對象實體類的定義如下所示,我們主要是根據(jù)返回結果進行定義的。
????///?<summary> ????///?創(chuàng)建部門的返回結果????///?</summary> ????public?class?CorpDeptCreateJson?:?BaseJsonResult ????{????????///?<summary> ????????///?返回的錯誤消息????????///?</summary> ????????public?CorpReturnCode?errcode?{?get;?set;?}????????///?<summary> ????????///?對返回碼的文本描述內(nèi)容????????///?</summary> ????????public?string?errmsg?{?get;?set;?}????????///?<summary> ????????///?創(chuàng)建的部門id。????????///?</summary> ????????public?int?id?{?get;?set;?} ????}
?
?3、部門管理的API調(diào)用
?上面小節(jié)介紹了如何封裝部門管理的API,那么我們封裝好了對應的接口和接口實現(xiàn),怎么樣在實際環(huán)境里面進行調(diào)用處理的呢,為了方便我創(chuàng)建一個小的Winform程序來測試對應API的功能,如下所示。
下面我們來介紹一下調(diào)用的代碼和效果展示。
????????private?void?btnCreateDeleteDept_Click(object?sender,?EventArgs?e) ????????{ ????????????ICorpAddressBookApi?bll?=?new?CorpAddressBookApi();????????????string?name?=?"測試部門"; ????????????CorpDeptCreateJson?json?=?bll.CreateDept(token,?name,?"2");????????????if?(json?!=?null) ????????????{ ????????????????Console.WriteLine("創(chuàng)建了部門:{0},?ID:{1}",?name,?json.id);????????????????//更新部門信息 ????????????????name?=?"測試部門修改名稱"; ????????????????CommonResult?result?=?bll.UpdateDept(token,?json.id,?name);????????????????if(result?!=?null) ????????????????{ ????????????????????Console.WriteLine("修改部門名稱:{0}?{1}",?(result.Success???"成功"?:?"失敗"),?result.ErrorMessage); ????????????????}????????????????//刪除部門 ????????????????result?=?bll.DeleteDept(token,?json.id);????????????????if?(result?!=?null) ????????????????{ ????????????????????Console.WriteLine("刪除部門名稱:{0}?{1}",?(result.Success???"成功"?:?"失敗"),?result.ErrorMessage); ????????????????} ????????????} ???????????? ????????}
????????///?<summary> ????????///?獲取部門列表????????///?</summary> ????????private?void?btnListDept_Click(object?sender,?EventArgs?e) ????????{ ????????????ICorpAddressBookApi?bll?=?new?CorpAddressBookApi(); ????????????CorpDeptListJson?list?=?bll.ListDept(token);????????????foreach?(CorpDeptJson?info?in?list.department) ????????????{????????????????string?tips?=?string.Format("{0}:{1}",?info.name,?info.id); ????????????????Console.WriteLine(tips); ????????????} ????????}
?
?更多C#開發(fā)微信門戶及應用(17)-微信企業(yè)號的通訊錄管理開發(fā)之部門管理?相關文章請關注PHP中文網(wǎng)!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)