收藏
回答

为什么公众号网页授权接口返回的state跟传过去的不一致?

公众号网页授权接口https://open.weixin.qq.com/connect/oauth2/authorize 在授权成功并跳转回 redirect_uri 之后,携带的state参数跟传过去的不一致。

以下为我测试的一次授权流程,其中除了部分参数删除了,主要关注state参数的变化

第一步 跳转到授权地址 https://open.weixin.qq.com/connect/oauth2/authorize?response_type=code&scope=snsapi_userinfo&redirect_uri=&appid=&state=%7B%22a%22%3A1%2C%22b%22%3A2%7D

第二步 自动跳转到 https://open.weixin.qq.com/connect/oauth2/authorize?response_type=code&scope=snsapi_userinfo&redirect_uri=&appid=&state=%7B%22a%22%3A1%2C%22b%22%3A2%7D&connect_redirect=1&uin=&key=&pass_ticket= 

到此时state参数依然正常

第三步 此时再次被重定向 https://open.weixin.qq.com/connect/oauth2/authorize?response_type=code&scope=snsapi_userinfo&redirect_uri=&appid=&state={a:+1,b:+2}&connect_redirect=1&uin=&key=&pass_ticket=

这一次的重定向看起来参数基本没变,但是到这一步明显参数的uriencode失效了,并且内容被篡改了,因为此处的state本来应该是个json,现在都不是合法json格式

现在问题就是,这到底是怎么回事?state不应该是传过去什么就传回来什么么?为什么会莫名其妙的被篡改?

回答关注问题邀请回答
收藏
登录 后发表内容