admin管理员组

文章数量:1558103

问题描述

微信公众号网页授权登录,因为是前后端项目,所以跳转是在前端做的,所以回调地址配置的是前端页面地址,例如:xxx/callback?redirect_url=需要登录才能访问的页面地址,问题发生在需要登录才能访问的页面地址上,如果这个地址上有两个参数,例如xxxx?a=1&b=2,这时候有两个参数a和b,拼接到微信登录页面就是:https://open.weixin.qq/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

本文标签: 后端公众网页项目