示例#1
0
文件: User.php 项目: mhger/fablife
 public static function boot()
 {
     parent::boot();
     static::deleted(function ($user) {
         SocialProfile::destroy($user->socialProfiles->lists('id'));
     });
 }
示例#2
0
 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');
 }