隨着微信使用越來越廣泛,微信公眾平台開放了許多接口以提供更多個性化的服務,包括自定義菜單接口、客服接口、獲取用戶信息接口、用戶分組接口、群發接口等,開發者在調用這些接口時,都需要傳入一個相同的參數access_token,它是公眾賬號的全局唯一票據,它是接口訪問憑證。
access_token的有效期是7200秒(兩小時),在有效期內可以使用,一旦access_token過期,需要重新通過調用微信接口獲取。目前微信接口上面獲取access_token每日限額為2000次,如果每次創建菜單,發送主動消息,獲取用戶信息,群發信息之前都去獲取,必然會達到該接口的頻率限制,在實際微信接口開發中,我們需要把獲取到的access_token存儲起來,然后設置有效期,在有效期過期后再去獲取,以保證access_token實時的有效性。
下面是自己想到的一種xml的存儲方式,直接貼代碼:
public string GetExistAccessToken()
{
// 讀取XML文件中的數據
string filepath = Server.MapPath("/File/XMLToken.xml");
StreamReader str = new StreamReader(filepath, System.Text.Encoding.UTF8);
XmlDocument xml = new XmlDocument();
xml.Load(str);
str.Close();
str.Dispose();
stringToken=xml.SelectSingleNode("xml").SelectSingleNode("AccessToken").InnerText;
DateTime AccessExpires =Convert.ToDateTime(xml.SelectSingleNode("xml").SelectSingleNode("AccessExpires").InnerText);
if (DateTime.Now >= AccessExpires)
{
Access_token mode = GetAccessToken();
xml.SelectSingleNode("xml").SelectSingleNode("AccessToken").InnerText = mode.access_token;
DateTime _accessExpires =DateTime.Now.AddSeconds(int.Parse(mode.expires_in));
xml.SelectSingleNode("xml").SelectSingleNode("AccessExpires").InnerText =_accessExpires.ToString();
xml.Save(filepath);
Token = mode.access_token;
}
return Token;
}
貼上XMLToken.xml 文件
<?xml version="1.0" encoding="utf-8"?>
<xml>
<AccessToken>6re6mjuHNHSeptaf8zwxMypCRHWPtTwXOsBffNO2tBPnglPmginrn0N9JwxnlHKw
</ AccessToken >
< AccessExpires >2014-05-03 19:04:18</ AccessExpires >
</xml>
從上面代碼中可以看出首先通過分析XML文檔,獲取里面的AccessToken及AccessExpires,對比當前時間,如果AccessExpires小於等於當前時間,則重新獲取access_token, 代碼中的GetAccessToken()就是獲取access_token的方法,獲取access_token后,將當前時間加上token有效期時間的結果及獲取到的access_token重新寫入到xml中,至此在以后的有效期范圍內,再次獲取access_token 將直接讀取xml文件中的AccessToken即可。
http://www.wechatstyle.com/weixinkaifa/225.html