/** * @return \Illuminate\Http\JsonResponse * @throws \FacebookFacebookAuthorizationException * @throws \Facebook\FacebookRequestException */ public function facebookAuth($code) { $accessToken = $this->getAccessToken($code); $session = new FacebookSession($accessToken); if (!$session) { throw new FacebookAuthorizationException('Invalid code'); } /** * @var GraphUser $userProfile */ $userProfile = (new FacebookRequest($session, 'GET', '/me'))->execute()->getGraphObject(GraphUser::className()); $user = Member::firstOrNew(['facebookId' => $userProfile->getId()]); $user->name = $userProfile->getName(); $user->save(); Auth::login($user); $memberToken = new MemberToken(); $memberToken->memberId = $user->id; $memberToken->accessToken = $accessToken; $memberToken->sessionId = Session::getId(); $memberToken->save(); return $accessToken; }