解决微信网页授权,出现"errcode":40163,"errmsg":"codebeenused,看似微信访问了2次这个回调接口的问题

先说说自己理解的微信机制:

微信内访问自己服务器的页面,如果访问出错,微信就会认为是微信自身的问题,那么他就会开启另外一个IP来访问这个页面(什么上海的IP,深圳的IP不等),再把访问结果发回用户端,但是如果另外来的那个IP访问也出错,就会返回到一个微信自己定义的404页面(什么找人信息之类的)


如果我们本身服务器页面也出错了,那么随便怎么访问都是出错的。。。那么问题来了,如果这个服务器出错的访问是用在微信网页授权上面呢?

首先看下流程:

微信内调用网页授权,首先是服务器发起访问一个微信网页授权的地址,带上回调地址。这个发起访问一般都没问题,按照那个文档来就可以,然后微信会主动访问你那个自己服务器的回调地址,并且带上一个参数code,然后自己的服务器接收到这个参数后,就把这个参数组装加密什么的,再去访问相关地址获取access_token,最终获取到用户信息,获取用户信息后,服务器还必须 反一个页面给用户,

那么在接到code到最终反一个页面给用户的过程中,如果本身程序就有错误,特别是在使用了这个code过后的出错,服务器反会错误了,那么这个时候,微信会根据最上面的原理,再次开启另外一个IP来访问,并且同样带和上次一样的code参数。这样你服务器又会去根据这个code参数去完成同样一次申请,这个时候,你表面上看起,就是报40163错误。说code被用了,但实际上是因为微信被迫开启另外一个ip来访问你的。。


那么我测试,只要是正常流程,微信只会访问一次你的回调接口。。。


这篇文章的问题 是出在我用API发红包的时候,在微信的回调里面,获取用户OPENID后,就去执行发红包的post了,结果这个里面出错(本地调试正常,部署到服务器里面就出错了。。。哎。。。。),然后日志里面就显示"errcode":40163,"errmsg":"codebeenused。。实际上本身就是我自己程序的问题。。


你可能感兴趣的:(解决微信网页授权,出现"errcode":40163,"errmsg":"codebeenused,看似微信访问了2次这个回调接口的问题)