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