最近在作企業號第三方應用開發,不過因爲微信的接口文檔寫的不詳細,並且比較混亂,走了很多彎路,如今就主要開發流程總結一下,以便新手朋友作個參考,有什麼問題或者不對的地方但願你們能夠指出,謝謝。php
本文主要介紹的是第三方應用建立和企業號受權安裝第三方應用,受權成功以後的接口調用就按照微信的具體功能開發文檔開發就能夠了,這部分仍是挺詳細的。api
下面介紹具體流程:安全
1.建立套件和應用服務器
1.1建立套件微信
套件簡單點理解就至關於應用的主體,也能夠把他看成應用的分類,能夠建立多個套件,每一個套件也能夠建立多個應用,建立套件以下圖:ide
點擊添加應用套件,填寫基本信息,比較特殊的是受權方式,受權方式有兩種:網站
1)線上自助註冊受權使用:指的是經過微信第三方應用平臺點擊跳轉到應用服務商的受權形式;ui
2)服務商輔助受權使用:指的是經過應用服務商的網站跳轉到微信接口的受權形式。加密
能夠根據須要自行選擇。url
以下圖:
點擊下一步,其餘信息按照要求填寫就能夠,可是系統事件接受URL須要驗證後才能保存,詳細接口說明,請點擊「回調模式」查看,簡單驗證代碼以下:
1 string signature = CommonHelper.QueryString("msg_signature"); //微信加密簽名 2 string timestamp = CommonHelper.QueryString("timestamp"); //時間戳 3 string nonce = CommonHelper.QueryString("nonce"); //隨機數 4 string echostr = CommonHelper.QueryString("echostr"); //隨機字符串 5 if (string.IsNullOrEmpty(signature) || string.IsNullOrEmpty(timestamp) || string.IsNullOrEmpty(nonce) || string.IsNullOrEmpty(echostr)) { return null; } 6 WXBizMsgCrypt wxMsgCrypt = new WXBizMsgCrypt(Token, EncodingAESKey, WeChatApiConfig.CorpID); //微信提供的加解密類 7 string sEchoStr = ""; 8 int code = wxMsgCrypt.VerifyURL(signature, timestamp, nonce, echostr, ref sEchoStr);
這裏用到了微信提供的加解密類,請點擊「加解密庫下載與返回碼」,將會跳轉到微信接口具體頁面
以下圖:
配置開發信息須要注意以下問題:
(1) 首先點擊「Token」和「EncodingAESKey」下面的「隨機生成」按鈕,對應生成密鑰;
(2) 而後配置「系統事件接收URL」,填寫寫好的回調路徑(如:http://www.你的域名.com/你的回調路徑),具體回調代碼編寫請參考接口「回調接口」,須要用到步驟一所設置的參數
(3) 根據自身需求填寫其餘項目,而後點擊「提交」按鈕,會驗證「系統事件接收URL」,須要用到步驟二的設置,不然沒法保存
1.2 建立應用
進入套件裏面添加建立應用,彈出以下頁面:
點擊開始建立應用按鈕,填寫基本信息,這裏logo要按照標準,還有截圖至少要上傳3張,要清晰,大小不能超過5M,不然審覈不會經過的,以下圖:
點擊下一步,填寫開發信息,以下圖:
CallbackURL 用來接受消息;
業務設置URL 設置須要驗證,驗證方式跟建立套件的系統事件接收URL是同樣的,不然沒法保存。設置成功以後,安裝應用後的企業號能夠經過這個連接直接快捷登陸到服務商後臺。如下列出主要代碼:
1 WeChatApiHelper apiHelper = new WeChatApiHelper(CommonApi.Token, CommonApi.EncodingAESKey, CommonApi.suiteId, CommonApi.suiteSecret); 2 string auth_code = CommonHelper.QueryString("auth_code"); //服務商須要在套件中的應用設置「業務設置URL」 回調,返回auth_code(oauth2.0受權企業號管理員登陸產生的code) 3 if (!string.IsNullOrEmpty(auth_code)) 4 { 5 WeChatUserHelper userHelper = new WeChatUserHelper(); 6 //獲取應用提供商憑證 微信接口連接:http://qydev.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E5%BA%94%E7%94%A8%E6%8F%90%E4%BE%9B%E5%95%86%E5%87%AD%E8%AF%81 7 ProviderAccessToken pAccessToken = apiHelper.GetProviderToken(); 8 if (pAccessToken != null && !string.IsNullOrEmpty(pAccessToken.provider_access_token)) 9 { 10 //獲取企業號登陸用戶信息 微信接口連接:http://qydev.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E4%BC%81%E4%B8%9A%E5%8F%B7%E7%99%BB%E5%BD%95%E7%94%A8%E6%88%B7%E4%BF%A1%E6%81%AF 11 WeChatLoginInfoModel resultModel = userHelper.GetLoginInfo(pAccessToken.provider_access_token, auth_code); 12 Response.Write(resultModel); 13 } 14 } 15 if (Request.InputStream != null && Request.InputStream.Length > 0) 16 { 17 //驗證經過接受消息 18 } 19 else 20 { 21 //第一次驗證 22 string signature = CommonHelper.QueryString("msg_signature"); //微信加密簽名 23 string timestamp = CommonHelper.QueryString("timestamp"); //時間戳 24 string nonce = CommonHelper.QueryString("nonce"); //隨機數 25 string echostr = CommonHelper.QueryString("echostr"); //隨機字符串 26 if (string.IsNullOrEmpty(signature) || string.IsNullOrEmpty(timestamp) || string.IsNullOrEmpty(nonce) || string.IsNullOrEmpty(echostr)) { return null; } 27 WXBizMsgCrypt wxMsgCrypt = new WXBizMsgCrypt(Token, EncodingAESKey, WeChatApiConfig.CorpID); //微信提供的加解密類 28 string sEchoStr = ""; 29 int code = wxMsgCrypt.VerifyURL(signature, timestamp, nonce, echostr, ref sEchoStr); 30 sEchoStr = apiHelper.CheckSignature(); 31 Response.Write(sEchoStr); 32 }
點擊提交,到如今建立應用就完成了
2. 企業號管理員受權流程
2.1 從企業號的第三方官網發起
這種方式比較簡單,按照微信接口說明作就能夠了,不用特殊說明,點擊跳轉微信接口
2.2 從應用提供商網站發起受權
本文重點介紹這種方式,主要分紅幾個步驟:
1)企業進入應用提供商網站
指的是,企業系統管理員進入應用提供商網站,如www.ABC.com。
2)獲取預受權碼
預受權碼是應用套件實現受權託管的安全憑證,經過suite_id,suite_secret和suite_ticket獲取,相關接口爲get_pre_auth_code。其中,suite_ticket由企業號服務器按期每10分鐘推送到套件註冊的callbackurl上 點擊查看詳情
3)應用提供商引導企業系統管理員進入應用套件受權頁
應用提供商能夠在本身的網站中放置「微信企業號應用受權」的入口,引導企業號管理員進入應用套件受權頁。網址爲:
https://qy.weixin.qq.com/cgi-bin/loginpage?suite_id=$suite_id$&pre_auth_code=$pre_auth_code$&redirect_uri=$redirect_uri$&state=$state$
該網址中應用提供商須要提供suite_id、預受權碼、受權完成回調URI和state
4)企業號管理員確認並贊成受權託管給應用提供商
企業號管理員進入套件受權頁後,設置受權內容,確認並贊成將本身的企業號應用或通信錄受權託管給應用提供商,完成受權流程。
5)受權成功,返回臨時受權碼
受權流程完成後,會進入回調URI,並在URI參數中返回臨時受權碼、過時時間以及state參數(redirect_uri?auth_code=xxx&expires_in=1200&state=xx)
6)利用臨時受權碼獲取永久受權碼以及受權信息
在獲得臨時受權碼後,應用提供商可使用臨時受權碼換取永久受權碼以及受權信息,後續能夠經過永久受權碼調用企業號相關API(能調用哪些API,取決於用戶將哪些權限集受權給了應用提供商)。
具體獲取接口,請點擊查看詳情