Senparc.Weixin跳过缓存策略获取accessToken的方法

发布日期:2019-06-18 13:33:06

        发现新的Senparc.Weixin控制台demo在vs2013里无法运行了,麻烦就麻烦在获取accessToken前需要全局注册缓存。于是我就解决方法就是通过修改代码跳过缓存策略获取到accessToken。

在代码中直接把var accessToken = AccessTokenContainer.TryGetAccessToken(appId, appSecret);替换成CommonApi.GetToken(appId, appSecret).access_token;就行了,最新的4.5代码库也可以在vs2013的控制台运行了。


以下为获取GetAccessToken的具体逻辑:

        public static AccessTokenResult GetAccessTokenResult(string appId, bool getNewToken = false)
        {
            if (!CheckRegistered(appId))
            {
                throw new UnRegisterAppIdException(appId, string.Format("此appId({0})尚未注册,请先使用AccessTokenContainer.Register完成注册(全局执行一次即可)!", appId));
            }


            var accessTokenBag = (AccessTokenBag)ItemCollection[appId];
            lock (accessTokenBag.Lock)
            {
                if (getNewToken || accessTokenBag.AccessTokenExpireTime <= DateTime.Now)
                {
                    //已过期,重新获取
                    accessTokenBag.AccessTokenResult = CommonApi.GetToken(accessTokenBag.AppId, accessTokenBag.AppSecret);
                    accessTokenBag.AccessTokenExpireTime = DateTime.Now.AddSeconds(accessTokenBag.AccessTokenResult.expires_in);
                }
            }
            return accessTokenBag.AccessTokenResult;
        }