C# - 关于过期Token的解决方案

使用static来定义变量和过期时间

  //===================== 初始化静态数据 ==========================
        #region 

        private static DateTime TokenExpTime = DateTime.Now.AddDays(-5);    //Access_Token过期时间

        private static string Access_Token = "";   //微信接口的通行证

        #endregion

实战:

  /// 
        ///   //获取access_token ,但是会过期,时间为7200秒。经常用又会被限制,所以得使用静态存储
        /// 
        /// 
        public String Get_access_token()
        #region
        {
            DateTime nowtime = DateTime.Now;

            if (nowtime > TokenExpTime)
            {              
                HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=" + this.CorpID + "&corpsecret=" + this.Secret);
                webRequest.Method = "GET";
                HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
                StreamReader sr = new StreamReader(webResponse.GetResponseStream(), Encoding.UTF8);
                
                string json = sr.ReadToEnd();
                JsonData data = JsonMapper.ToObject(json);
                if (data["access_token"] == null)
                {
                    log.WriteLog("获取access_token出错,错误信息为:" + json);
                    Access_Token = "";
                }

                Access_Token = data["access_token"].ToString();

                TokenExpTime = nowtime.AddMinutes(90);//重新设置过期时间
            }

            return Access_Token;
        }
        #endregion

 

转载于:https://www.cnblogs.com/CyLee/p/5472643.html

你可能感兴趣的:(c#,json,前端)