承认有点标题党了。这次开发一个项目遇到问题,以前有两个微信老项目基于yaf
,域名为m.baidu.com
(做示例),然后网页授权域名填的是m.baidu.com
,而这次新开发的项目是基于laravel
,那么域名为wechat.baidu.com
,但是网页授权域名怎么办,这就坑爹了。当然了,大部分人不会遇到这么蛋疼的事情吧。
前提
laravel5.5
php7.1.0
nginx1.10
overtrue/laravel-wechat
了解微信OAuth
这个过程必须要明白
感谢超神的图片
从流程我们可以看到,回调url
域名其实就是我们的网页授权域名。那么既然这样我们是不是可以造个假呢,
在域名为wechat.baidu.com
的项目下,我们也把网页授权域名写成m.baidu.com
,然后再使用nginx
做代理,基于location
转发到wechat.baidu.com
下;
改写overtrue/laravel-wechat
中间件
为什么要改写这个中间件呢,因为中间件默认会直接获取你的域名,所以如果我使用wechat.baidu.com
,那么默认就会回调后跳转到wechat.baidu.com
,而实际上我要跳转到m.baidu.com
在Middleware
文件夹下新建一个中间件OAuthAuthenticate
,并且继承 Overtrue\Lara