公众号的基本搭建请见我的上一篇文章:
《Laravel5.8+esayWechat5.0实现公众号开发》
1.在app/Http/Kernel.php中添加路由中间件
protected $routeMiddleware = [
// ...
'wechat.oauth' => \Overtrue\LaravelWeChat\Middleware\OAuthAuthenticate::class,
];
在路由中设置中间件,且能直接通过session获取用户数据
Route::group(['middleware' => ['web', 'wechat.oauth:default,snsapi_userinfo']], function () {
oute::get('/user', function (){
$user = session('wechat.oauth_user.default'); // 拿到授权用户资料
dd($user);
});
});
中间件支持指定配置名称,easywechat.oauth:default
wechat.oauth:default
也可以指定当前的scopes:
wechat.oauth:default,snsapi_userinfo
在config/wechat.app中,对official_account下的default中oauth取消注释
'official_account' => [
'default' => [
'app_id' => env('WECHAT_OFFICIAL_ACCOUNT_APPID', 'your-app-id'), // AppID
'secret' => env('WECHAT_OFFICIAL_ACCOUNT_SECRET', 'your-app-secret'), // AppSecret
'token' => env('WECHAT_OFFICIAL_ACCOUNT_TOKEN', 'your-token'), // Token
'aes_key' => env('WECHAT_OFFICIAL_ACCOUNT_AES_KEY', ''), // EncodingAESKey
/*
* OAuth 配置
*
* scopes:公众平台(snsapi_userinfo / snsapi_base),开放平台:snsapi_login
* callback:OAuth授权完成后的回调页地址(如果使用中间件,则随便填写。。。)
* enforce_https:是否强制使用 HTTPS 跳转
*/
'oauth' => [
'scopes' => array_map('trim', explode(',', env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_SCOPES', 'snsapi_userinfo'))),
'callback' => env('WECHAT_OFFICIAL_ACCOUNT_OAUTH_CALLBACK', '/examples/oauth_callback.php'),
'enforce_https' => false,
],
],
],
注意:enforce_https一定要设置为false,不然微信的回调地址一直会带上https进行回调报错。
在公众号平台配置项中设置一下回调地址
在以上路由/user中微信访问时是需要授权的,在这条路由的回调或控制器方法里,就可以直接从session(‘wechat.oauth_user.default’)拿到授权用户信息。