最近開發一個項目,有公眾號的,要求從公眾號的快捷菜單進入網站,然后實現自動登錄的功能。其實就是一個通過Code獲取OpenId的過程。以前做項目時,也用過。不過最近不知道為什么,總是提示code been used, hints: [ req_id: **************]的40163的錯誤 。
找度娘問了,才知道,原來是用已得到的Code連續請求了兩次,可是為什么會請求兩次呢。排查了半天,真是半天的時間,浪費呀,也做了不少的測試。在我的項目里我找到了一個原因:
點一下微信公眾號的快捷菜單,跳轉到網站頁面會請求兩次。
比如說:一個快捷菜單為:網站首頁,它的鏈接為:http://www.home.com,把么你就會發現,這個首頁里會有兩次訪問。
這還不是奇怪的地方,更奇怪的是安卓系統和蘋果系統還不一樣。安卓請求兩次,蘋果請求一次。
具體是什么原因我還是沒找到,只是發現了這樣的問題。
我是這樣解決的。
在第一次請求時,把得到的OpenId緩存下來。返回OpenId,走正常程序流。
第二次請求時,把OpenId直返回。不再請求。注意,這里,如果有第二次請求的話,第一次請求會正常走完,但頁面不會返回,第二次請求時將頁面返回。
可能說的有點亂。希望能給您帶去一點思路。