微信公衆號前後端分離項目網頁授權登錄問題

問題描述

微信公衆號網頁授權登錄,因爲是前後端項目,所以跳轉是在前端做的,所以回調地址配置的是前端頁面地址,例如:xxx/callback?redirect_url=需要登錄才能訪問的頁面地址,問題發生在需要登錄才能訪問的頁面地址上,如果這個地址上有兩個參數,例如xxxx?a=1&b=2,這時候有兩個參數a和b,拼接到微信登錄頁面就是:https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=xxx%2Fcallback%3Fredirect_url%3Dxxx%3Fa%3D1%26b%3D2&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect,用戶授權後,回調到的地址參數爲:
xxx/callback?redirect_url=xxxx%3Fa%3D1&b=2&code=CODE&state=STATE,發現原先回調地址的第二個參數作爲回調地址的獨立參數出現,而不是包含在redirect_url中,這樣在回調頁面中獲取到的redirect_url值就會少了一個參數b,這樣對於業務而言就不完整了。

問題解決方案

在回調的頁面中,不直接獲取redirect_url的值,而是通過window.location.href中去拆分拿到redirect_url=後的所有值,再去掉除微信加入的code和state參數,剩下的就是之前完整的redirect_url。
注:這個問題應該是微信公衆號的一個bug

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章