我也遇到了这个问题,顶!
[第三方平台]授权后回调URI对redirect_uri中的自定义参数转义错误导致回调失败在该页面内,有如下说明: https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Authorization_Process_Technical_Description.html “方式二:点击移动端链接快速授权 第三方平台方可以生成授权链接,将链接通过移动端直接发给授权管理员,管理员确认后即授权成功。” 其中,参数“redirect_uri”在“步骤 4:授权后回调 URI,得到授权码(authorization_code)和过期时间”时,如果redirect_uri中存在自定义参数并按&拼接,则其&会被微信服务器变成&,导致回调失败。 例子: 假设用户的redirect_uri为: http://127.0.0.1/test/?a=1&b=2&c=3 通过RFC 3986 URL编码后成为 http%3A%2F%2F127.0.0.1%2Ftest%2F%3Fa%3D1%26b%3D2%26c%3D3 拼接后得到移动授权链接: https://mp.weixin.qq.com/safe/bindcomponent?action=bindcomponent&auth_type=3&no_scan=1&component_appid=xxxx&pre_auth_code=xxxxx&redirect_uri=http%3A%2F%2F127.0.0.1%2Ftest%2F%3Fa%3D1%26b%3D2%26c%3D3&auth_type=xxx&biz_appid=xxxx#wechat_redirect 最终回调时,微信服务器把redirect_uri中的&变成&,导致返回如下地址: http://127.0.0.1/test/?a=1&b=2&c=3&auth_code=xxxxxxxxxxxxxxxxxx&expires_in=3600 结果第三方平台无法获取自定义参数b和c,导致回调业务失败。 =============== 查了查,这个bug似乎很早有人提,但不知道为什么没人受理。 相关例子:https://developers.weixin.qq.com/community/develop/doc/0004a019c24f48fdfba74d84551000
2020-05-27