解決微信網頁授權:出現errcode:40163

首先看下流程:

微信內調用網頁授權,首先是服務器發起訪問一個微信網頁授權的地址,帶上回調地址。這個發起訪問一般都沒問題,按照那個文檔來就可以,然後微信會主動訪問你那個自己服務器的回調地址,並且帶上一個參數code,然後自己的服務器接收到這個參數後,就把這個參數組裝加密什麼的,再去訪問相關地址獲取access_token,最終獲取到用戶信息,獲取用戶信息後,服務器還必須 反一個頁面給用戶,

那麼在接到code到最終反一個頁面給用戶的過程中,如果本身程序就有錯誤,特別是在使用了這個code過後的出錯,服務器反會錯誤了,那麼這個時候,微信會根據最上面的原理,再次開啓另外一個IP來訪問,並且同樣帶和上次一樣的code參數。這樣你服務器又會去根據這個code參數去完成同樣一次申請,這個時候,你表面上看起,就是報40163錯誤。說code被用了,但實際上是因爲微信被迫開啓另外一個ip來訪問你的。。
 

 但是正常流程微信只會訪問一次你的授權接口。

以下是我的解決過程:

1、根據打印日誌查看code是否獲取到,我的是接口調用兩次,第二次和第一次的code打印出來不一樣,在網上查了很多,有人說是code被使用,第二次訪問就會報此錯誤,也有人說是你的邏輯代碼執行時間太長,超過十秒,微信就會再調用一次你的接口,這時就會報錯,但是我打印出來執行時間並沒有超過10s.可能這個有用,但是對我的問題來說並沒有什麼作用

2、會不會是code過期。根據這個想法,我把第一次獲取到的code存在redis中,等到用的時候,直接從redis中取,超過5分鐘的 則重新獲取code(總所周知微信網頁授權獲取到的 code 只能使用一次 ,5分鐘內有效),一旦使用就移除,保證每次使用的code都是有效的。但是這個方法對我的問題還是沒有解決。

3、會不會是自己邏輯代碼有問題。通過對邏輯代碼的打印,查看,結果發現在最後一步返回數據時出了問題,這個簡直了,修改後,問題立馬解決。瞬間有種想抽死自己的感覺,找了一天的問題居然是這個。

其實報這個錯誤不是人家微信的錯誤,與其說別人的錯,還不如多看看自己寫的代碼,沒茅臺~

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章