H5微信授權(quán)登錄后點(diǎn)擊返回出現(xiàn)循環(huán)登錄無(wú)法退出問(wèn)題
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
簡(jiǎn)單介紹h5微信授權(quán)流程
從子頁(yè)面返回到入口頁(yè)形成的循環(huán)授權(quán)登錄完成了入口頁(yè)面到子頁(yè)面的跳轉(zhuǎn),現(xiàn)在點(diǎn)擊返回按鈕或者通過(guò)手勢(shì)操作滑動(dòng)屏幕回到入口頁(yè)面,頁(yè)面流轉(zhuǎn)過(guò)程如下圖所示:(這里有個(gè)前置知識(shí):返回到上級(jí)頁(yè)面微信內(nèi)置瀏覽器會(huì)觸發(fā)上級(jí)頁(yè)面重新加載。) 是否可以通過(guò)location.replace解決頁(yè)面返回出現(xiàn)循環(huán)授權(quán)的問(wèn)題?location.replace() 方法可以用一個(gè)新文檔取代當(dāng)前文檔,如在 A頁(yè)面中通過(guò)location.href跳轉(zhuǎn)到B頁(yè)面,我們可以通過(guò)瀏覽器后退按鈕返回到A頁(yè)面。若使用location.replace(B.html)跳轉(zhuǎn)到B頁(yè)面,則A頁(yè)面會(huì)被B頁(yè)面替換掉,用戶無(wú)法通過(guò)瀏覽器返回按鈕進(jìn)行返回。 了解了location.replace()的作用,我們現(xiàn)在將之前的授權(quán)流程通過(guò)location.replace來(lái)改造一下。 通過(guò)location.replace替換當(dāng)前頁(yè)的方法,頁(yè)面棧中最后只剩下了入口頁(yè)面與子頁(yè)面,現(xiàn)在點(diǎn)擊返回按鈕自然就回到了入口頁(yè)面。不過(guò),真的是這樣嗎?: ( 微信瀏覽器中的location.replace如果通過(guò)location.replace就能解決問(wèn)題,微信開放社區(qū)也不會(huì)有同學(xué)從16年到現(xiàn)在都在咨詢?nèi)绾谓鉀Q返回循環(huán)授權(quán)問(wèn)題。這里直接告訴大家,location.replace在微信瀏覽器中不生效,而且ios,安卓,微信開發(fā)者工具里使用location.replace的表現(xiàn)不一致:
解決方案了解了整個(gè)問(wèn)題形成的原因,以及使用location.replace之后頁(yè)面棧中的狀況,再來(lái)解決返回循環(huán)授權(quán)這一問(wèn)題就很簡(jiǎn)單了。 在有code的頁(yè)面調(diào)用登錄接口成功之后,我們向sessionStorage中存一個(gè)臨時(shí)值再跳轉(zhuǎn)到子頁(yè)面,然后修改空白授權(quán)頁(yè)的初始化邏輯即可:
注:空白授權(quán)頁(yè)為應(yīng)用的入口,頁(yè)面返回即關(guān)閉應(yīng)用。我們可以判斷臨時(shí)值是否存在,存在則執(zhí)行 wx.closeWindow() 關(guān)閉整個(gè)網(wǎng)頁(yè)窗口即可完成應(yīng)用退出。 ?作者:小草先森tyro 鏈接:https://juejin.cn/post/6969876122871791623 來(lái)源:稀土掘金 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。 該文章在 2025/1/15 13:09:43 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |