微信对接错误处理
问题一
再获取微信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); } }