1. 程式人生 > >C#微信公眾平臺開發之access_token的獲取儲存與更新

C#微信公眾平臺開發之access_token的獲取儲存與更新

一、什麼是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受限,只是那個人比較麻煩一點需要去重新整理