接上篇文本,千辛萬苦終於拿到了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在前端做些事情了。
