微信公众平台开发学习笔记2--获取access token

access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。获取的access_token过期时间为2小时。获取access token具体说明请参考官方文档。

我们不能因为每个业务要用到access_token的时候,都去微信服务器去请求获取新的access_token,所以我们要把获取到的access_token进行保存。

解决问题的大体思路如下:

我们将获取到的access_token码,和调用微信接口时的时间保存到数据库,或者记录到xml中,每次要用到access_token的时候,先判断下是否过去,如果过期则请求微信服务器获取新的access_token,并且更新掉原有的access_token。

Code:

        #region 获取AccessToken
        /// <summary>
        /// 获取AccessToken:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。
        /// </summary>
        /// <param name="appid">第三方用户唯一凭证</param>
        /// <param name="secret">第三方用户唯一凭证密钥,即appsecret</param>
        /// <returns></returns>
        public static string GetAccessToken(string appid, string secret)
        {
            //string AccessToken=string.Empty;
            //if(CheckAccessToken(ref AccessToken))
            //  return AccessToken;
            
            //微信提供的access_token获取的HttpGet请求地址
            string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}",appid,secret);
            var httpClient = new HttpClient();
            var result = httpClient.GetAsync(url).Result;
            if (!result.IsSuccessStatusCode)//请求是否成功
                return string.Empty;

            var content = result.Content.ReadAsStringAsync().Result;
            var model = Newtonsoft.Json.JsonConvert.DeserializeObject<AccessTokenModel>(content);

            return model.access_token;
        }

        /// <summary>
        /// 获取AccessToken:access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。
        /// </summary>
        /// <returns></returns>
        public static string GetAccessToken()
        {
            string appid = string.Empty;//从数据库中读取:第三方用户唯一凭证。后台加盐保存到数据库
            string secret = string.Empty;//从数据库中读取:第三方用户唯一凭证密钥,即appsecret。后台加盐保存到数据库
            return "";
        }

        /// <summary>
        /// 判断AccessToken是否过期 false过期 
        /// </summary>
        /// <returns></returns>
        private static bool CheckAccessToken(ref string AccessToken)
        {
            string oAccessToken = string.Empty;//读取数据库中保存的AccessToken和时间,判断是否过期,过期获取新的AccessToken
            DateTime dt;//数据库获取保存的时间
            //if()//判断是否过期
            //{
            
            //}
            return true;
        }
        #endregion    

公司还没给申请到测试号和域名,代码暂时只写个大概,仅供个人学习记录。

原文地址:https://www.cnblogs.com/zxcnn/p/4275140.html