企業微信接入應用實現自動登陸(.NET版)


公司開通了企業微信,為了增加員工使用企業微信的積極性,將之前所開發系統URL掛到企業應用中,並實現自動登陸。

 

企業微信官方定義:

UserId用於在一個企業內唯一標識一個用戶,通過網頁授權接口可以獲取到當前用戶的UserId信息,如果需要獲取用戶的更多信息可以調用通訊錄管理的成員接口來獲取。

 

根據定義,首先要獲取ACCESS_TOKEN,這個參數在微信開發中一般都要首先獲取,不管是微信公眾號還是企業號,

而官方一般用PHP做示范代碼,那么.NET發送HTTP請求並獲取返回值的方法該如何寫?

 

一 : 寫了一個HTTPS輔助類,利用WebRequest 類發送HTTPS請求,StreamReader 讀取返回值,用第三方類庫解析返回ACCESS_TOKEN。

 

JObject對象需要調用第三方類庫。

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

 

二 : 寫了一個企業微信(WeChatEnterprise)輔助類,用於在應用中調用接口等。

 

 

獲取ACCESS_TOKEN,調用接口 https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=id&corpsecret=secrect

獲取ACCESS_TOKEN之后在應用程序中一定要做緩存,緩存時間7200秒,不然ACCESS_TOKEN 數量可能不夠用。

 

HTTPS輔助類和企業微信輔助類為什么要分開寫,因為前者是通用的,后者是針對企業微信的。

 

三 : 下面是官方的API接口定義

       獲取Code比較關鍵,因為企業微信的應用跳轉到其他應用是無法攜帶信息的,要實現免登錄,首先要通過接口獲取Code,然后通過Code和Access_token 獲取UserId.

   
      獲取CODE需要在企業微信客戶端進行測試,所以需要一台服務器布置網站,經過半個多月的走流程,終於配了一台騰訊雲服務器,windows 2008 R2系統,2G/4核/50G系統盤/100G數據盤/6M寬帶(此處應有一個哭的表情)。

 

     開始沒理解獲取CODE的API,https://open.weixin.qq.com/connect/oauth2/authorize?appid=CORPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 這個是API鏈接,CORPID根據自己的信息填入,redirect_url 是重定向地址,什么是重定向地址,就是企業微信應用里面員工界面地址填的是上面這個長地址,如果redirect_url中的地址通過可信域名的驗證,微信會幫你跳轉到重定向地址,跳轉的時候會通過QueryString攜帶CODE參數。然后我們開發者就可以通過QueryString["Code"]獲取Code.

     幾個點注意下:比如員工最終要訪問的地址是 www.baidu.com/a/b.html ,那么可信域名是 www.baidu.com,redirect_url 是www.baidu.com/a/b.html,redirect_url要經過UrlEncode處理。

 

    四:獲取Code之后一切都好辦了,無非是根據APi獲取自己需要的用戶信息,大概說一下我的處理方法。

   

 

 

    上面這段代碼是在上文所說的b.html的后台處理的,即微信重定向的頁面后台。

    有幾個點解釋下上面的代碼。

    第一:官方說每次獲取CODE有一定的時間開銷,所以建議使用Cookie進行緩存。

    第二:we.UserId,we.User都是根據企業微信官方API簡單寫的兩個關於獲取UserId和User的函數。如下圖

 

      第三:JObject User_Obj = (JObject)JsonConvert.DeserializeObject(User);JObject引用了第三方類庫Newtonsoft,這個類庫在后台處理JSON格式時比較好用。

      第四:catch里面這句代碼 if (!(ex is System.Threading.ThreadAbortException)) ,因為TRY里面用了Response.Redirect,會引起線程提前結束異常,然后執行catch里面的語句。

      第五:忽略不規范的命名和跳轉里面的TYPE參數,並沒有什么意義。

 

     五:本來最后想來個效果演示的,不過好像比較麻煩,步驟就是點擊進行企業微信-》我-》工作台-》點擊我的應用->打開已經登陸后的應用首頁

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM