public function getLoginFacebookCallback() { FacebookSession::setDefaultApplication(Config::get('facebook.app_id'), Config::get('facebook.secret')); $helper = new FacebookRedirectLoginHelper(url('/users/login-facebook-callback')); try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { // When Facebook returns an error } catch (Exception $ex) { // When validation fails or other local issues } $request = new FacebookRequest($session, 'GET', '/me'); $response = $request->execute(); $graphUser = $response->getGraphObject(GraphUser::className()); $facebookUserId = $graphUser->getId(); $facebookFirstName = $graphUser->getFirstName(); $facebookLastName = $graphUser->getLastName(); $facebookName = $graphUser->getName(); $facebookEmailAddress = $graphUser->getProperty('email'); // sometimes the response does not contain the email address, although the user gave email permission if (empty($facebookEmailAddress)) { $facebookEmailAddress = $facebookFirstName . '.' . $facebookLastName . '@facebook.com'; } $socialProfile = SocialProfile::where('uid', '=', $facebookUserId)->first(); if (empty($socialProfile)) { $user = new User(); $user->first_name = $facebookFirstName; $user->last_name = $facebookLastName; $user->email = $facebookEmailAddress; $user->username = $facebookName; $user->avatar = 'https://graph.facebook.com/' . $facebookUserId . '/picture?type=large'; $user->reg_method = 'facebook'; $user->active = true; $user->save(); $socialProfile = new SocialProfile(); $socialProfile->uid = $facebookUserId; $socialProfile = $user->socialProfiles()->save($socialProfile); } $socialProfile->access_token = $session->getToken(); $socialProfile->save(); $user = $socialProfile->user; Auth::login($user); return Redirect::action('ProductController@getIndex')->with('message_info', 'Mit Facebook eingeloggt'); }