callApiService = $callApiService; $this->appleTokenService = $appleTokenService; } public function redirectToProvider($provider) { $this->oauth2Info = request('oauth2Info'); $brandCode = 'member-'.$provider; $response = $this->callApiService->callApi([ 'url' => 'setup-page', 'data' => [ 'PageVars' => [ 'Query' => "(setup_code = 'sso-client' and brand_code = '{$brandCode}') and is_on_use = '1'", 'Limit' => 100 ] ], ]); if (!empty($response['Page'])) { $setupJson = $response['Page'][0]['SetupJson']; $setupArray = json_decode($setupJson, true); $redirectUri = route('social.login', ['provider' => $brandCode]); if (json_last_error() === JSON_ERROR_NONE) { $clientId = $setupArray['ClientId'] ?? null; // dd($clientId); } } if ($provider == 'naver') { $url = 'https://nid.naver.com/oauth2.0/authorize?' . http_build_query([ 'response_type' => 'code', 'client_id' => $clientId, 'redirect_uri' => $redirectUri, 'state' => csrf_token(), ]); } elseif ($provider == 'kakao') { $url = 'https://kauth.kakao.com/oauth/authorize?' . http_build_query([ 'response_type' => 'code', 'client_id' => $clientId, 'redirect_uri' => $redirectUri, 'state' => csrf_token(), ]); } return redirect($url); } public function login($provider) { [$this->target, $ssoBrand] = explode('-', $provider); if ($this->target == 'member') { if ($ssoBrand == 'naver') { return Redirect::away('https://talk.naver.com/ct/w5u3g9'); }elseif($ssoBrand == 'kakao'){ return Redirect::away('https://pf.kakao.com/_aAAGj/chat'); } } } //사용안함 public function setConfig($provider, $target) { $config = [ 'client_id' => $this->oauth2Info['ClientId'], 'client_secret' => $this->oauth2Info['ClientSecret'], 'redirect' => "/social/$target-$provider/callback" ]; switch ($provider) { case 'dabory': $driver = Socialite::buildProvider(DaboryProvider::class, [ 'client_id' => config('app.api.main.ClientId'), 'client_secret' => config('app.api.main.ClientSecret'), 'redirect' => $config['redirect'] ]); break; case 'facebook': $driver = Socialite::buildProvider(FacebookProvider::class, $config); break; case 'kakao': $driver = Socialite::buildProvider(KakaoProvider::class, $config); break; case 'google': $driver = Socialite::buildProvider(GoogleProvider::class, $config); break; case 'naver': $driver = Socialite::buildProvider(NaverProvider::class, $config); break; case 'apple': $config['client_secret'] = $this->appleTokenService->generate( $this->oauth2Info['PrivateKey'], $this->oauth2Info['ClientId'], $this->oauth2Info['TeamId'], $this->oauth2Info['KeyId'], ); $driver = Socialite::buildProvider(Provider::class, $config); break; } return $driver; } }