/** * 社交登录回调 */ 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('/'); }