微信公眾平台網頁登錄授權多次重定向跳轉,導致code使用多次問題


背景:微信網站開發

  昨天我負責的一個項目忽然出現了一個十分詭異的bug,進行微信授權登錄的時候請求code的時候安卓手機會多次重定向調轉我的接口接收code的接口redirect_uri 微信請求調轉接收code的的接口,加了Url.encode(),也就是我這邊默認請求了多次這個接口,然而蘋果手機沒有問題,於是我寫了日志看了下沒錯,有時候會請求兩次或者更多次這個重定向的接口地址,所以導致了與用戶登錄進去以后,報  {“errcode”:40163,"errmsg":"code been used"} 這里提示已經非常的明白,code已經被使用過了,為何這個項目上線后了三四個月了,才會出現這個問題,然后我其他的項目也是使用同樣的微信授權登錄的寫法都完全沒毛病。

  結合這個問題我到網上查找了一些解決方案,有人說使用緩沖把第一次獲取的code存入緩沖,然后再請請求的時候判斷是否存在這個值,這種方法雖然聽起來挺合理的,但是完全不符合開發原諒,並且沒有從更本上找到問題。

   還有一種方式就是在請求鏈接中加上一個參數:connect_redirect=1 ( 微信請求code的接口:https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=xxx&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect),很多人的多次請求都加上這個參數解決了,而我發現我的並不是這個問題,不過假如你們遇到了這個問題可以試一試也許有用。

   最后我發現無論我怎么改動我的代碼,微信還是默認會返回多個同樣的code給我,最后我在我的服務器采取網絡抓吧,結果終於讓我找到了bug的源頭,原來是360安全衛士搞得鬼,每次會員請求一次讓后360也會模擬一次請求,導致了有時候多吃請求,把360一關閉就好了,真的是太坑了,熬夜整整搞了一天,這個鍋終於不用我背了,網站又可以正常運行了。

 

總結:

  通過這次我知道了,其實有的時候我們在找bug的時候不僅僅只去找程序的代碼是否有問題,還應該從服務器,網絡環境等多個方面去尋找,不能在一棵樹上吊死!!

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM