美文网首页
解决微信网页授权,出现"errcode":40163,"errm

解决微信网页授权,出现"errcode":40163,"errm

作者: 阿泽453 | 来源:发表于2019-04-05 13:30 被阅读0次

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

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

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

    首先看下流程:

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

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

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

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

    实际上本身就是我自己程序的问题。。

    普遍遇到的code been used问题:

    基本思路:当我点击菜单按钮进入页面时,先去sssion缓存中去那由code获取到的openId,如果openId不存在,则证明code为首次使用,可以根据传过来的code获取相应的access_token和openId。

    相关文章

      网友评论

          本文标题:解决微信网页授权,出现"errcode":40163,"errm

          本文链接:https://www.haomeiwen.com/subject/qzwhiqtx.html