C#微信公眾平臺開發之access_token的獲取儲存與更新
阿新 • • 發佈:2018-11-08
一、什麼是access_token?
access_token是公眾號的全域性唯一票據,公眾號呼叫各介面時都需使用access_token。正常情況下access_token有效期為7200秒,重複獲取將導致上次獲取的access_token失效。由於獲取access_token的api呼叫次數非常有限,建議開發者全域性儲存與更新access_token,頻繁重新整理access_token會導致api呼叫受限,影響自身業務。
二、要解決的問題
1、如何獲取access_token。
2、由於access_token的有效期為7200秒,即2小時,並且重複獲取將導致上次獲取的access_token失效,獲取access_token的api呼叫次數非常有限,所以要解決如何全域性儲存與更新access_token。
3、多人請求access_token引起高併發
三、獲取token
protected OAuth_Token Get_token() { appid = "appid"; appsecret = "appsecret "; //獲取微信回傳的openid、access token string Str = GetJson("https://api.weixin.qq.com/cgi-bin/token?appid=" + appid + "&secret=" + appsecret + "&grant_type=client_credential"); //微信回傳的資料為Json格式,將Json格式轉化成物件 OAuth_Token Oauth_Token_Model = JsonHelper.ParseFromJson<OAuth_Token>(Str); return Oauth_Token_Model; }
判斷token是否過期
#region 驗證Token是否過期 /// <summary> /// 驗證Token是否過期 /// </summary> public static bool TokenExpired(string access_token) { string jsonStr = HttpRequestUtil.RequestUrl(string.Format("https://api.weixin.qq.com/cgi-bin/menu/get?access_token={0}", access_token)); if (Tools.GetJsonValue(jsonStr, "errcode") == "42001") { return true; } return false; } #endregion
注:每個人請求token會導致api呼叫受限,在專案中就遇到這個問題,把token儲存到資料庫並且只能限制幾個人可以去獲取token,這樣次數少不會讓api受限,只是那個人比較麻煩一點需要去重新整理