Пример #1
0
 /**
  * 社交登录回调
  */
 public function getCallback()
 {
     $platform = Input::get('platform');
     $info = Socialite::driver($platform)->user();
     $socialAccount = SocialAccount::whereId($info->id)->wherePlatform($platform)->first();
     if (!$socialAccount) {
         $socialAccount = SocialAccount::from($info, $platform);
         if (Auth::guest()) {
             $user = User::create();
             $user->nickname = $socialAccount->nickname;
             $user->avatar = $socialAccount->avatar;
             if ($platform == 'github') {
                 $user->email = $socialAccount->email;
             }
         } else {
             $user = User::findOrNew(Auth::id());
         }
         $user->social()->save($socialAccount);
         $user->save();
     }
     Auth::loginUsingId($socialAccount->user_id, true);
     return Redirect::to('/');
 }