微信消息推送,獲取access_token時AppSecret錯誤或者access_token無效 invalid credential, access_token is invalid or not latest rid


最近微信推送消息出現:獲取access_token時AppSecret錯誤或者access_token無效 invalid credential, access_token is invalid or not latest rid,    這個access_token 無效的問題,之前消息推送都是沒有問題的,

就最近一周定時器發送消息推送出現偶爾發送成功,偶爾發送提示這個access_token 的問題

前提:微信公眾號 AppId 和AppSecret 都沒有錯的情況下,之前都可以

造成這個問題的原因是:微信獲取access_token 接口調用量/上線次數 達到了頂峰 10000,如圖1所示:

 

如圖1 所示,調用接口次數達到上線,導致獲取access_token 失敗的問題;

於是查找 code ,發現access_token 獲取居然是沒進行全局緩存記錄下來,直接每次調用接口獲取一次,如下代碼所示:

 /// <summary>
        ///  獲取會員微信息
        /// </summary>
        /// <param name="openid"></param>
        /// <returns></returns>
        public UserInfoJson GetUserInfo(string openid)
        {
            AccessTokenContainer.Register(WeiXinConfig.AppId, WeiXinConfig.AppSecret);
            var token = AccessTokenContainer.GetAccessToken(WeiXinConfig.AppId);
            UserInfoJson result = null;
            try
            {
                result = UserApi.Info(token, openid);
                this._logHandle.LogInfo("GetUserInfo 獲取會員微信信息:"+result.nickname);
            }
            catch (Exception ex)
            {
                this._logHandle.LogException(ex, "GetUserInfo 獲取會員微信信息失敗! openid: " + openid);
                this._logHandle.LogInfo("GetUserInfo 獲取會員微信信息失敗:" +ex.Message);
            }
            return result;
        }

果然是個坑,於是將上述代碼做修改,並且在全局進行微信相關注冊緩存操作

 /// <summary>
        ///  獲取會員微信息
        /// </summary>
        /// <param name="openid"></param>
        /// <returns></returns>
        public UserInfoJson GetUserInfo(string openid)
        {
            //AccessTokenContainer.Register(WeiXinConfig.AppId, WeiXinConfig.AppSecret);
            //var token = AccessTokenContainer.GetAccessToken(WeiXinConfig.AppId);
            UserInfoJson result = null;
            try
            {
                result = UserApi.Info(WeiXinConfig.AppId, openid);
                this._logHandle.LogInfo("GetUserInfo 獲取會員微信信息:"+result.nickname);
            }
            catch (Exception ex)
            {
                this._logHandle.LogException(ex, "GetUserInfo 獲取會員微信信息失敗! openid: " + openid);
                this._logHandle.LogInfo("GetUserInfo 獲取會員微信信息失敗:" +ex.Message);
            }
            return result;
        }

global.asax.cs

 protected void Application_Start()
        {
            // winxin
            var isGLobalDebug = true;//設置全局 Debug 狀態
            var senparcSetting = SenparcSetting.BuildFromWebConfig(isGLobalDebug);
            var register = RegisterService.Start(senparcSetting).UseSenparcGlobal();//CO2NET全局注冊,必須!
            //var register = RegisterService.Start(senparcSetting).UseSenparcGlobal();//必須 
            var isWeixinDebug = true;//設置微信 Debug 狀態
            var senparcWeixinSetting = SenparcWeixinSetting.BuildFromWebConfig(isWeixinDebug);
            register.UseSenparcWeixin(senparcWeixinSetting, senparcSetting);////微信全局注冊,必須!



         
        }

Startup.cs

 public void Configuration(IAppBuilder app)
        {
            // 有關如何配置應用程序的詳細信息,請訪問 http://go.microsoft.com/fwlink/?LinkID=316888
            ConfigureAuth(app);
            ConfigureJob(app);

            MemberService.RegisterSenparc(); 
        }

 MemberService.cs

 //注冊微信 
        public  static void RegisterSenparc()
        {
            
            AccessTokenContainer.Register(WeiXinConfig.AppId, WeiXinConfig.AppSecret);
        }

 

在此記錄下,避免以后出現相關的坑


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM