private async Task <WechatAccessToken> GetOrRefreshToken() { if (_accessToken != null) { var age = DateTime.UtcNow - _accessToken.IssueTime; if (age.TotalSeconds < _accessToken.ExpiresIn) { return(_accessToken); } } using (var client = new HttpClient()) { var uriBuilder = new UriBuilder(_options.TokenURI); uriBuilder.Query = $"grant_type=client_credential&appid={_options.AppId}&secret={_options.AppSecret}"; var response = await client.GetAsync(uriBuilder.Uri); response.EnsureSuccessStatusCode(); var json = await response.Content.ReadAsStringAsync(); _accessToken = JsonConvert.DeserializeObject <WechatAccessToken>(json); _accessToken.IssueTime = DateTime.UtcNow; return(_accessToken); } }
public static string RefrenshToken(string appid, string appsecret) { string userAgent = System.Web.HttpContext.Current.Request.UserAgent; string url = string.Format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={0}&secret={1}", appid, appsecret); HttpWebResponse res = HttpWebResponseUtility.CreateGetHttpResponse(url, null, userAgent, null); Stream stream = res.GetResponseStream(); StreamReader sr = new StreamReader(stream); string result = sr.ReadToEnd(); WechatAccessToken token = new WechatAccessToken(); token = JsonConvert.DeserializeObject <WechatAccessToken>(result); string access_token = token.access_token; if (string.IsNullOrEmpty(token.access_token)) { WechatError err = new WechatError(); err = JsonConvert.DeserializeObject <WechatError>(result); access_token = "appid或者appsecret错误,无法获取access_token 微信错误代码:" + err.errcode + "微信错误信息:" + err.errmsg; LogHelper.Error(access_token); } else { AccessTokenService.WriteToken(token.access_token, System.DateTime.Now.AddMinutes(115).ToString("yyyy-MM-dd HH:mm:ss")); } return(access_token); }