所谓的潇洒

导航

微信对接错误处理

问题一

  再获取微信Openid的时候报错:{"errcode":40029,"errmsg":"invalid code"}

  原因:code只能用一次,仔细跟踪代码分析日志即可发现,已经用它获取过一次openid了,所以不能再用了,openid可以存下来用

问题二

  微信访问网站首页获取不到code

  解决:问题一、二都适用

  

        [HttpGet]
        public ActionResult Index()
        {
            string code = Request["code"];//用于获取微信openid
            if (!string.IsNullOrEmpty(code))
            {
                ViewBag.Code = code;
                ViewBag.Title = title;
                return View();
            }
            //重新获取code
            var state = "MyProject" + DateTime.Now.Millisecond;//随机数,用于防止缓存
            var url = OAuthApi.GetAuthorizeUrl(
                    appId,
                   "http://" + Request.Url.Host + "/Default/BaseCallback?returnUrl=" + "/Default/Index".UrlEncode(),
                    state,
                    OAuthScope.snsapi_base);
            return Redirect(url);
        }

        [HttpGet]
        public ActionResult BaseCallback(string code, string state, string returnUrl)
        {
            try
            {
                if (string.IsNullOrEmpty(code))
                {
                    return View("prompt", new PromptModel(this.redirectUrl + "?code=1", "您拒绝了授权!"));
                }
                return Redirect(returnUrl.UrlDecode() + "?code=" + code);
            }
            catch (ErrorJsonResultException ex)
            {
                LogHelper.logger.Error(ex);
                return View(ex.Message);
            }
        }

 

posted on 2020-11-21 17:40  所谓的潇洒  阅读(190)  评论(0编辑  收藏  举报