解决⽹页授权,出现
先说说⾃⼰理解的机制:
访问⾃⼰服务器的页⾯,如果访问出错,就会认为是⾃⾝的问题,那么他就会开启另外⼀个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问题:
普遍遇到的code been used问题:
基本思路:当我点击菜单按钮进⼊页⾯时,先去sssion缓存中去那由code获取到的openId,如果openId不存在,则证明code为⾸次使⽤,可以根据传过来的code获取相应的access_token和openId。