解决微信网页授权’redirect_uri 参数错误’的一个神坑

Posted by

最近在用laravel开发一个微信公众号,遇到了一个微信网页授权的神坑。中文的错误提示是:”redirect_uri 参数错误”。搞了几天,终于搞明白这个神坑是如何产生的。

微信网页授权的两次跳转

在微信网页授权的整个过程中,会产生两次跳转。第一次是发起授权后,微信会把授权的user信息发送到callback的网页。callback网页拿到user信息后,将信息写入session。第二次跳转,就是写入成功后,跳转回到用户访问的目标页面。

这里最关键的就是第一次跳转的url,微信网页授权的神坑,就在这里。

第一次跳转的redirect_uri是由两个参数拼接而成

CTMD的,我想了很久才想明白,这个redirect_uri实际上是两个参数拼接而成。一个参数是在微信公众号的后台设置的:

网页授权获取用户基本信息

里的 授权回调页面域名 。

另外一个参数是,我们放在.env环境变量里的 WECHAT_OAUTH_CALLBACK,这个redirect_uri实际上是这两个字符串拼接而成的。

如果微信后台设置的是 http://www.your-site-url.com,那么WECHAT_OAUTH_CALLBACK 就应该是/wechat/callback。如果第一个参数是http://www.your-site-url.com/ ,那么WECHAT_OAUTH_CALLBACK,就应该是wechat/callback。

拼接后的地址就是完整的redirect_uri,http://www.your-site-url.com/wechat/callback。微信网页授权的神坑就在这里,微信官方文档里和各种第三方库里都很少有人提到这个神坑。。。

3 comments

  1. laravel的.env中没有WECHAT_OAUTH_CALLBACK 这个配置

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据