'omDRm6ial5hRdys0NpnHQpYJ44aY', 'name' => '潘亮', 'nickname' => '潘亮', 'avatar' => 'https://via.placeholder.com/64x64.png', 'email' => null, 'original' => [], 'provider' => 'WeChat', ]); session(['easywechat.oauth_user.default' => $user]); return $next($request); } // 保证兼容性参数处理 $prefix = ('work' !== $type) ? 'official_account' : 'work'; $sessionKey = \sprintf('easywechat.oauth_user.%s', $account); $name = \sprintf('easywechat.%s.%s', $prefix, $account); $config = config($name, []); $service = $this->getWechatApp($name); $scope = $scope ?: Arr::get($config, 'oauth.scopes', ['snsapi_base']); if (\is_string($scope)) { $scope = \array_map('trim', explode(',', $scope)); } if (Session::has($sessionKey)) { event(new WeChatUserAuthorized(session($sessionKey), false, $account)); return $next($request); } // 是否强制使用 HTTPS 跳转 $enforceHttps = Arr::get($config, 'oauth.enforce_https', false); if ($request->has('code')) { session([$sessionKey => $service->getOAuth()->userFromCode($request->query('code'))]); event(new WeChatUserAuthorized(session($sessionKey), true, $account)); return redirect()->to($this->getIntendUrl($request, $enforceHttps)); } session()->forget($sessionKey); // 跳转到微信授权页 return redirect()->away( $service->getOAuth()->scopes($scope)->redirect($this->getRedirectUrl($request, $enforceHttps)) ); } // public function handle(Request $request, Closure $next): Response // { // if (config('app.debug')) { // $user = new SocialiteUser([ // 'id' => 'omDRm6ial5hRdys0NpnHQpYJ44aY', // 'name' => '潘亮', // 'nickname' => '潘亮', // 'avatar' => 'https://via.placeholder.com/64x64.png', // 'email' => null, // 'original' => [], // 'provider' => 'WeChat', // ]); // session(['easywechat.oauth_user.default' => $user]); // return $next($request); // } // } protected function getWechatApp($name) { $app = EasyWeChat::officialAccount($name); $app->setAccessToken(new \App\Services\WechatOfficialAccessToken( appId: $app->getAccount()->getAppId(), secret: $app->getAccount()->getSecret(), cache: $app->getCache(), httpClient: $app->getHttpClient(), stable: $app->getConfig()->get('use_stable_access_token', false), )); } }