微信遇到特殊服务器,解决微信网页授权,出现errcode:40163,errmsg:codebeenused,看似微信访问了2次这个回调接口的问题...
先說說自己理解的微信機(jī)制:
微信內(nèi)訪問自己服務(wù)器的頁(yè)面,如果訪問出錯(cuò),微信就會(huì)認(rèn)為是微信自身的問題,那么他就會(huì)開啟另外一個(gè)IP來訪問這個(gè)頁(yè)面(什么上海的IP,深圳的IP不等),再把訪問結(jié)果發(fā)回用戶端,但是如果另外來的那個(gè)IP訪問也出錯(cuò),就會(huì)返回到一個(gè)微信自己定義的404頁(yè)面(什么找人信息之類的)
如果我們本身服務(wù)器頁(yè)面也出錯(cuò)了,那么隨便怎么訪問都是出錯(cuò)的。。。那么問題來了,如果這個(gè)服務(wù)器出錯(cuò)的訪問是用在微信網(wǎng)頁(yè)授權(quán)上面呢?
首先看下流程:
微信內(nèi)調(diào)用網(wǎng)頁(yè)授權(quán),首先是服務(wù)器發(fā)起訪問一個(gè)微信網(wǎng)頁(yè)授權(quán)的地址,帶上回調(diào)地址。這個(gè)發(fā)起訪問一般都沒問題,按照那個(gè)文檔來就可以,然后微信會(huì)主動(dòng)訪問你那個(gè)自己服務(wù)器的回調(diào)地址,并且?guī)弦粋€(gè)參數(shù)code,然后自己的服務(wù)器接收到這個(gè)參數(shù)后,就把這個(gè)參數(shù)組裝加密什么的,再去訪問相關(guān)地址獲取access_token,最終獲取到用戶信息,獲取用戶信息后,服務(wù)器還必須 反一個(gè)頁(yè)面給用戶,
那么在接到code到最終反一個(gè)頁(yè)面給用戶的過程中,如果本身程序就有錯(cuò)誤,特別是在使用了這個(gè)code過后的出錯(cuò),服務(wù)器反會(huì)錯(cuò)誤了,那么這個(gè)時(shí)候,微信會(huì)根據(jù)最上面的原理,再次開啟另外一個(gè)IP來訪問,并且同樣帶和上次一樣的code參數(shù)。這樣你服務(wù)器又會(huì)去根據(jù)這個(gè)code參數(shù)去完成同樣一次申請(qǐng),這個(gè)時(shí)候,你表面上看起,就是報(bào)40163錯(cuò)誤。說code被用了,但實(shí)際上是因?yàn)槲⑿疟黄乳_啟另外一個(gè)ip來訪問你的。。
那么我測(cè)試,只要是正常流程,微信只會(huì)訪問一次你的回調(diào)接口。。。
這篇文章的問題 是出在我用API發(fā)紅包的時(shí)候,在微信的回調(diào)里面,獲取用戶OPENID后,就去執(zhí)行發(fā)紅包的post了,結(jié)果這個(gè)里面出錯(cuò)(本地調(diào)試正常,部署到服務(wù)器里面就出錯(cuò)了。。。哎。。。。),然后日志里面就顯示"errcode":40163,"errmsg":"codebeenused。。
實(shí)際上本身就是我自己程序的問題。。
普遍遇到的code been used問題:
基本思路:當(dāng)我點(diǎn)擊菜單按鈕進(jìn)入頁(yè)面時(shí),先去sssion緩存中去那由code獲取到的openId,如果openId不存在,則證明code為首次使用,可以根據(jù)傳過來的code獲取相應(yīng)的access_token和openId。
總結(jié)
以上是生活随笔為你收集整理的微信遇到特殊服务器,解决微信网页授权,出现errcode:40163,errmsg:codebeenused,看似微信访问了2次这个回调接口的问题...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css怎样通过超链接更改背景,css超链
- 下一篇: 高性能dhcp服务器,基于线程池机制的高