獲取接口調用憑證明質就是獲取access_token。在微信接口開發中,許多服務的使用都離不開Access Token,Access Token至關於打開這些服務的鑰匙,正常狀況下會在7200秒內失效,重複獲取將致使上次獲取的Token失效,本文將首先介紹如何獲取Access Token。git
按微信官方的說明,access_token是公衆號的全局惟一接口調用憑據,公衆號調用各接口時都需使用access_token。開發者須要進行妥善保存。access_token的存儲至少要保留512個字符空間。access_token的有效期目前爲2個小時,需定時刷新,重複獲取將致使上次獲取的access_token失效。github
公衆平臺的API調用所需的access_token的使用及生成方式說明:redis
一、建議公衆號開發者使用中控服務器統一獲取和刷新access_token,其餘業務邏輯服務器所使用的access_token均來自於該中控服務器,不該該各自去刷新,不然容易形成衝突,致使access_token覆蓋而影響業務;數據庫
二、目前access_token的有效期經過返回的expire_in來傳達,目前是7200秒以內的值。中控服務器須要根據這個有效時間提早去刷新新access_token。在刷新過程當中,中控服務器可對外繼續輸出的老access_token,此時公衆平臺後臺會保證在5分鐘內,新老access_token均可用,這保證了第三方業務的平滑過渡;小程序
三、access_token的有效時間可能會在將來有調整,因此中控服務器不只須要內部定時主動刷新,還須要提供被動刷新access_token的接口,這樣便於業務服務器在API調用獲知access_token已超時的狀況下,能夠觸發access_token的刷新流程。api
公衆號和小程序都可以使用AppID和AppSecret調用接口來獲取access_token。AppID和AppSecret可在「微信公衆平臺-開發-基本配置」頁中得到(須要已經成爲開發者,且賬號沒有異常狀態)。調用接口時,請登陸「微信公衆平臺-開發-基本配置」提早將服務器IP地址添加到IP白名單中,點擊查看設置方法,不然將沒法調用成功。小程序無需配置IP白名單。瀏覽器
這兒須要特別說明的是:在調用全部微信接口時均使用https協議;還有就是若是第三方不使用中控服務器,而是使選擇各個業務邏輯點各自去刷新access_taken,那麼就有可能會產生衝突,致使服務不穩定。服務器
獲取Access Token接口的網址以下:微信
https請求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=[APPID]&secret=[APPSECRET]
方括號內的參數APPID與APPSECRET就是咱們公衆號的掊入信息,以下圖所示:app
由於獲得access_token的接口支持Get請求,由於咱們能夠直接用瀏覽器訪問這個接口獲得access_token看一下效果,以下圖所示:
正常狀況下,微信會返回下述JSON數據包給公衆號:
{"access_token":"ACCESS_TOKEN","expires_in":7200}
錯誤時微信會返回錯誤碼信息,JSON數據包實示例以下(該示例爲AppID無效錯誤):
{"errcode":40013,"errmsg":"invalid appid"}
能夠看到返回的是一個Json格式的字符串,同時包含了過時的時間爲7200秒,也就是2個小時內失效,以後須要從新請求前面的URL獲取新的Token。
實際應用過程當中咱們通常建議統一的接口來定時刷新微信access_token,以保證整個微信應用的正常運行。只要2小時內統一刷新一下便可。同時對於獲取到的憑證通常統一保存,能夠存在數據庫中,也能夠放redis或配置文件中。
注意:使用access_token的時候要注意此接口是有調用頻率限制的,當超過了每日最大的調用頻率微信服務器就會對當前公衆號作接口限制,具體詳情請閱讀官方文檔(微信公衆號接口頻率限制說明)
獲取access_token的參考代碼以下:
List<KeyValuePair<string, object>> parmeters = new List<KeyValuePair<string, object>> { new KeyValuePair<string, object>(WeixinOfficialAccountTable.FieldDeleteMark, 0) }; var listOfficialAccount = BaseEntity.GetList<WeixinOfficialAccountEntity>(RDIFrameworkService.Instance.WeixinBasicService.GetOfficialAccountDTByValues(parmeters)); if (listOfficialAccount != null && listOfficialAccount.Count() > 0) { foreach (WeixinOfficialAccountEntity entity in listOfficialAccount) { try { if (entity.Category == (int)WeChatSubscriberEnum.EnterpriseSubscriber) { if (!string.IsNullOrEmpty(entity.AppId) && !string.IsNullOrEmpty(entity.AppSecret)) { //方法一:使用Senparc.WeiXin SDK的方法 entity.AccessToken = Senparc.Weixin.QY.CommonAPIs.CommonApi.GetToken(entity.AppId, entity.AppSecret).access_token; //方式二,直接調用微信的接口方法 //var url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type={0}&appid={1}&secret={2}", "client_credential".AsUrlData(), entity.AppId.AsUrlData(), entity.AppSecret.AsUrlData()); //AccessTokenResult result = Get.GetJson<AccessTokenResult>(url); //entity.AccessToken = result.access_token; entity.ModifiedOn = DateTime.Now; returnValue += RDIFrameworkService.Instance.WeixinBasicService.UpdateOfficialAccount(entity); } } else { if (!string.IsNullOrEmpty(entity.AppId) && !string.IsNullOrEmpty(entity.AppSecret)) { //方法一:使用Senparc.WeiXin SDK的方法 entity.AccessToken = Senparc.Weixin.MP.CommonAPIs.CommonApi.GetToken(entity.AppId, entity.AppSecret).access_token; //方式二,直接調用微信的接口方法 //var url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type={0}&appid={1}&secret={2}", "client_credential".AsUrlData(), entity.AppId.AsUrlData(), entity.AppSecret.AsUrlData()); //AccessTokenResult result = Get.GetJson<AccessTokenResult>(url); //entity.AccessToken = result.access_token; entity.ModifiedOn = DateTime.Now; returnValue += RDIFrameworkService.Instance.WeixinBasicService.UpdateOfficialAccount(entity); } } } catch (Exception ex) { } } }
上面的代碼咱們封裝了企業訂閱號、媒體訂閱號、我的訂閱號、測試號的憑證調用。同時使用的Senparc.WeiXin SDK接口直接獲取憑證的方式,你們可供參考,獲得的憑證我是存在了數據庫中,同時支持多公衆號統一維護,詳細可參考後面的文章會介紹微信公衆號統一管理以及定時刷新公衆號憑證。
調試獲取到的憑證效果以下:
RDIFramework.NET — 基於.NET的快速信息化系統開發框架 — 系列目錄
RDIFramework.NET ━ .NET快速信息化系統開發框架 ━ 工做流程組件介紹
RDIFramework.NET框架SOA解決方案(集Windows服務、WinForm形式與IIS形式發佈)-分佈式應用
RDIFramework.NET代碼生成器全新V3.5版本發佈-重大升級
一路走來數個年頭,感謝RDIFramework.NET框架的支持者與使用者,你們能夠經過下面的地址瞭解詳情。
RDIFramework.NET官方網站:http://www.rdiframework.net/
RDIFramework.NET官方博客:http://blog.rdiframework.net/
同時須要說明的,之後的全部技術文章以官方網站爲準,歡迎你們收藏!
RDIFramework.NET框架由專業團隊長期打造、一直在更新、一直在升級,請放心使用!
歡迎關注RDIFramework.net框架官方公衆微信(微信號:guosisoft),及時瞭解最新動態。
掃描二維碼當即關注