微信授權,重定向兩次


做微信支付的時候,需要微信授權拿openId

大概流程就是,把用戶重定向到微信一個地址,然后微信帶着code重定向回來,然后拿code換用戶的openId

這期間發生了一件比較有意思的事情,android版的微信授權失敗導致沒法支付,看了一下服務器上報錯如下

System.Collections.Generic.KeyNotFoundException: 給定關鍵字不在字典中。
   在 System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   在 WxPayAPI.JsApiPay.GetOpenidAndAccessTokenFromCode(String code)
{"errcode":40163,"errmsg":"code been used, hints: [ req_id: tivCza01272165 ]"}

 

我支付代碼是和官方demo一樣的,基本沒改。

然后看到這個錯誤,我第一反映是打一下日志,我把授權頁面打上了日志,記錄了一下訪問時間和訪問的url完整地址,也就是包含參數部分的。

然后再把用code換openId的result也用日志記錄了。

然后發現

我請求拿code后,微信同一個code給我重定向回來了兩次,第一次我換取到了openId,第二次沒換到openI的,錯誤內容是 code has been used,也就是code被使用過了。

所以問題肯定是出在兩次重定向。但是為什么會同一個code重定向兩次?我搜了一下,很多開發同學都碰到過,有的人請求授權的時候加了一個參數  &connect_redirect=1 ,我看了一下很多人的反饋,有些人是可以解決問題的,有些人依然沒解決,比如我。。。。。

然后搜來搜去,還有人在園子里說是360搞的鬼,見帖子: http://www.cnblogs.com/Can-daydayup/p/10128324.html

然后我服務器也安裝了 360 ,然后我一退出就不會了。所以我想問問@MJ0011,為什么我們服務器發起請求,你360要做一次?

360能給個說法么?這是要解決什么問題所以要重發一個請求?


免責聲明!

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



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