//刷新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    = WechatHttpWebResponseUtility.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;
                WechatLogHelper.Error(access_token);
            }
            else
            {
                ConfigService.WriteKey("WechatAccessToken", access_token);
                ConfigService.WriteKey("WechatAccessTokenExpiredTime", System.DateTime.Now.AddMinutes(115).ToString("yyyy-MM-dd HH:mm:ss"));
            }
            return(access_token);
        }
Exemple #2
1
        /// <summary>
        /// Get Wechat Access Token. The token expires in 7200 seconds. If the call fails, throw InvalidOperationException.
        /// </summary>
        /// <returns>Access Token object</returns>
        public static WechatAccessToken GetAccessToken()
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(string.Format(GetAccessTokenUrlTemplate, AppId, AppSecret));

            request.Method      = "GET";
            request.ContentType = "content-type: text/html; charset=utf-8";

            HttpWebResponse res       = (HttpWebResponse)request.GetResponse();
            Stream          resStream = res.GetResponseStream();

            DataContractJsonSerializer serAccessToken = new DataContractJsonSerializer(typeof(WechatAccessToken));
            WechatAccessToken          token          = (WechatAccessToken)serAccessToken.ReadObject(resStream);

            if (token == null || token.AccessTokenData == null)
            {
                DataContractJsonSerializer serError = new DataContractJsonSerializer(typeof(Error));
                Error error = (Error)serError.ReadObject(resStream);
                throw new InvalidOperationException(string.Format("Error: {0}|{1}", error.ErrorCode, error.ErrorMessage));
            }
            else
            {
                return(token);
            }
        }
Exemple #3
0
 /// <summary>
 /// Cache Access Token to wechat database
 /// </summary>
 /// <param name="token">Access Token to be saved</param>
 internal static void SaveAccessTokenToDatabaseCache(WechatAccessToken token)
 {
     using (WechatDBDataContext database = new WechatDBDataContext())
     {
         AccessToken accessTokenEntity = new AccessToken();
         accessTokenEntity.AccessTokenData = token.AccessTokenData;
         accessTokenEntity.ExpireBy        = DateTime.UtcNow.AddSeconds(AccessTokenSafeExpire);
         database.AccessTokens.InsertOnSubmit(accessTokenEntity);
         database.SubmitChanges();
     }
 }