接上篇文本,千辛萬苦終於拿到了access_token。
正常情況下access_token有效期為7200秒,重復獲取將導致上次獲取的access_token失效。目前,獲取access_token接口的調用頻率限制為2000次/天。
所以我們將把它存起來,對於access_token的存儲,可以考慮存儲在文件、數據庫或內存中。
這里我們就使用緩存Memcache存儲及更新access_token(Memcache是一個高性能的分布式的內存對象緩存系統,將數據調用到內存中,然后從內存中讀取,從而大大提高讀取速度。)
在 1.4.5 版本以前 memcached 可以作為一個服務安裝,由於公司項目使用的就是1.4.5之前的版本,下載好解壓,復制到你的服務器
C:\Users\Administrator\Desktop\memcached\memcached.exe -d install
服務里面會多一個memcached的服務,然后
C:\Users\Administrator\Desktop\memcached\memcached.exe -d start 或者右鍵啟動
Memcache就裝好了。
然后做為一個前端開發,就要去寫后端代碼了,首先引入依賴的dll
后端語言c#
public class WxCache { public string access_token { get;set;} public int expires_in { get;set;} }
public string GetToken() { //因為服務是裝在服務器上的,這里的ip就寫127.0.0.1,端口是默認的11211 //可以改,沒試到就不說了,大家自行百度 //這里的MemCache已經是封裝過后的,做了一些初始化配置 MemCache cache = new MemCache(new[] { "127.0.0.1:11211" }, ""); //判斷是否有token,沒有就發請求 if(string.IsNullOrEmpty(cache.Get<string>("token"))){ HttpWebRequest request = (HttpWebRequest)WebRequest.Create("獲取token的url"); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); string retString = myStreamReader.ReadToEnd(); var result = JsonConvert.DeserializeObject<WxCache>(retString); myStreamReader.Close(); myResponseStream.Close(); //拿到的數據反序列化,token存起來 //MemCache可以設置過期時間,這里設置的是1個半小時 cache.Set("token", result.access_token, DateTime.Now.AddMinutes(90)); return result.access_token; } else { //一個半小時內緩存還在,就用沒有過期的token return cache.Get<string>("token"); } }
結束,接下來就可以拿着access_token在前端做些事情了。