1. 程式人生 > >微信公眾平臺網頁登入授權多次重定向跳轉,導致code使用多次問題

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

背景:微信網站開發

  昨天我負責的一個專案忽然出現了一個十分詭異的bug,進行微信授權登入的時候請求code的時候安卓手機會多次重定向調轉我的介面接收code的介面redirect_uri 微信請求調轉接收code的的介面,加了utl.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的時候不僅僅只去找程式的程式碼是否有問題,還應該從伺服器,網路環境等多個方面去尋找,不能在一棵樹上吊死!!