public function facebookLogin(Request $request) { $fb = new Facebook(); // если код не предоставлен if (Input::get('code') === null) { return Redirect::to('http://what-it-means.ru/#/site/auth/facebook/error/rejected-by-user'); } // если код предоставлен, но он не верен (кто то вмешался по середине) $authResult = $fb->auth(Input::get('code')); if (!$authResult) { return Redirect::to('http://what-it-means.ru/#/site/auth/facebook/error/auth-error'); } // если все в порядке, выполним нужные нам действия (авторизация, регистрация) $fbUserData = $fb->api('/me'); // нужно ли зарегистрировать пользователя или авторизовать? if (isset($fbUserData->email)) { $user = User::findByEmail($fbUserData->email); if (!$user) { $user = User::create(array('name' => $fbUserData->name, 'email' => $fbUserData->email, 'password' => md5(Func::hash(8)))); } Auth::login($user, true); return Redirect::to('http://what-it-means.ru/#/site/auth/facebook/success/'); } //echo var_dump($fbUserData); // нужно ли только авторизовать пользователя даже если емейл не предоставлен? $userSocGlueData = UserSocGlue::where(['provider' => 'facebook', 'provider_user_id' => $fbUserData->id])->first(); if ($userSocGlueData) { Auth::login(User::find($userSocGlueData->user_id), true); return Redirect::to('http://what-it-means.ru/#/site/auth/facebook/success/'); } // если не хватает данных о юзере и он не зарегистрирован if (!isset($fbUserData->email)) { return Redirect::to('http://what-it-means.ru/#/site/auth/facebook/error/no-email'); } }