Ejemplo n.º 1
1
 public function getUserPagesFromRedirect()
 {
     $token = $this->getAccessTokenFromRedirect();
     try {
         $pages = $this->facebook->get('/me/accounts', $token)->getGraphEdge();
         return $pages;
     } catch (\Exception $e) {
         abort(500);
     }
 }
Ejemplo n.º 2
1
 public function authorize()
 {
     try {
         $this->accessToken = $this->helper->getAccessToken();
     } catch (FacebookResponseException $e) {
         // When Graph returns an error
         throw new FacebookAuthenticationException('Graph returned an error: ' . $e->getMessage());
     } catch (FacebookSDKException $e) {
         // When validation fails or other local issues
         throw new FacebookAuthenticationException('Facebook SDK returned an error: ' . $e->getMessage());
     }
     if (!$this->accessToken) {
         throw new FacebookAuthenticationException('Access token not received. ' . $this->helper->getError(), $this->helper->getErrorCode());
     }
     try {
         // Returns a `Facebook\FacebookResponse` object
         $response = $this->facebook->get('/me?fields=id,name', $this->accessToken);
     } catch (FacebookResponseException $e) {
         throw new FacebookAuthenticationException('Graph returned an error: ' . $e->getMessage());
     } catch (FacebookSDKException $e) {
         throw new FacebookAuthenticationException('Facebook SDK returned an error: ' . $e->getMessage());
     }
     $fbUser = $response->getGraphUser();
     if (!($user = $this->doctrine->getRepository('QuizBundle:User')->findOneBySocialId($fbUser['id']))) {
         $user = (new Entity\User())->setAccessToken($this->accessToken)->setSocialType(Entity\User::FACEBOOK)->setSocialId($fbUser['id'])->setName($fbUser['name']);
         $manager = $this->doctrine->getManager();
         $manager->persist($user);
         $manager->flush();
     }
     $token = new SocialToken($user, $this->accessToken, 'facebook', [$this->adminId == $fbUser['id'] ? 'ROLE_ADMIN' : 'ROLE_USER']);
     $this->tokenStorage->setToken($token);
 }
Ejemplo n.º 3
1
 /**
  * Return info about facebook user
  * @param $fields
  * @return array
  * @throws Exception
  */
 public function getMe($fields)
 {
     $client = $this->fb->getOAuth2Client();
     $accessTokenObject = $this->helper->getAccessToken();
     if ($accessTokenObject == null) {
         throw new Exception("User not allowed permissions");
     }
     if ($fields == "" || !is_array($fields) || count($fields) == 0) {
         //array is empty
         $fields = array(ID);
         //set ID field
     }
     try {
         $accessToken = $client->getLongLivedAccessToken($accessTokenObject->getValue());
         $response = $this->fb->get("/me?fields=" . implode(",", $fields), $accessToken);
         $this->setSocialLoginCookie(self::SOCIAL_NAME);
         return $response->getDecodedBody();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         throw new Exception($e->getMessage());
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         throw new Exception($e->getMessage());
     }
 }
 /**
  * 
  */
 public function verifyCredentials(Request $request)
 {
     $config = app()->make('config');
     $fb = new Facebook\Facebook(['app_id' => $config->get('services.facebook.client_id'), 'app_secret' => $config->get('services.facebook.client_secret'), 'default_graph_version' => 'v2.5']);
     $helper = $fb->getJavaScriptHelper();
     try {
         // $accessToken = $helper->getAccessToken();
         $accessToken = new AccessToken($request->input('accessToken'), $request->input('expiresIn'));
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     if (!isset($accessToken)) {
         echo 'No cookie set or no OAuth data could be obtained from cookie.';
         exit;
     }
     try {
         // Returns a `Facebook\FacebookResponse` object
         $response = $fb->get('/me?fields=id,name,email,picture,friends', $accessToken->getValue());
         /*$friendsResponse = $fb->get('/me/friends', $accessToken->getValue());
           //$result['data'];
           foreach($friendsResponse->getGraphEdge() as $node) {
             var_dump($node);
           }
           exit;*/
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     // Logged in
     $user = $response->getGraphUser();
     // var_dump($user);exit;
     // echo 'Name: ' . $user['name'];
     // $_SESSION['fb_access_token'] = (string) $accessToken;
     $authUser = $this->findOrCreateUser($user);
     app()['auth']->login($authUser, true);
     $hasher = app()->make('hash');
     /*var_dump( $hasher->make(
           "app()->make('config')->get('app.key')" . $authUser->facebook_id
       ));exit;*/
     return ['username' => $authUser->email, 'password' => app()->make('config')->get('app.pass_prefix') . $authUser->facebook_id];
     //return redirect()->route('home');
     // get posted credentials.
     // verify credentials against FB.
     // fetch user data.
     // check user existance: true => return user.
     // check user existance: false => register and return user.
 }
 /**
  * @see OAuth2\IOAuth2GrantExtension::checkGrantExtension
  */
 public function checkGrantExtension(IOAuth2Client $client, array $inputData, array $authHeaders)
 {
     if (!isset($inputData['facebook_access_token'])) {
         return false;
     }
     $this->facebookSdk->setDefaultAccessToken($inputData['facebook_access_token']);
     try {
         // Try to get the user with the facebook token from Open Graph
         $fbData = $this->facebookSdk->get('/me?fields=email,id,first_name,last_name,name,name_format');
         if (!$fbData instanceof \Facebook\FacebookResponse) {
             return false;
         }
         // Check if a user match in database with the facebook id
         $user = $this->userManager->findUserBy(['facebookId' => $fbData->getDecodedBody()['id']]);
         // If none found, try to match email
         if (null === $user && isset($fbData->getDecodedBody()['email'])) {
             $user = $this->userManager->findUserBy(['email' => $fbData->getDecodedBody()['email']]);
         }
         // If no user found, register a new user and grant token
         if (null === $user) {
             // TODO: Create new user
             return false;
         } else {
             // Else, return the access_token for the user
             // Associate user with facebookId
             $user->setFacebookId($fbData->getDecodedBody()['id']);
             $this->userManager->updateUser($user);
             return array('data' => $user);
         }
     } catch (\FacebookApiExceptionion $e) {
         return false;
     }
 }
Ejemplo n.º 6
0
 /**
  * @param string $token
  *
  * @return UserProfileInterface|null
  */
 protected function getTokenInfo($token)
 {
     try {
         // Get the Facebook\GraphNodes\GraphUser object for the current user.
         $response = $this->facebook->get('/me?fields=id,name,email,first_name,last_name', $token);
         $user = $response->getGraphUser();
         // check if we can get user identifier
         if (empty($user->getId())) {
             return null;
         }
         // do not accept tokens generated not for our application even if they are valid,
         // to protect against "man in the middle" attack
         $tokenMetadata = $this->facebook->getOAuth2Client()->debugToken($token);
         // this is not required, but lets be sure because facebook API changes very often
         $tokenMetadata->validateAppId($this->facebook->getApp()->getId());
         $userProfile = new UserProfile();
         $userProfile->setIdentifier($user->getId());
         $userProfile->setDisplayName($user->getName());
         $userProfile->setFirstName($user->getFirstName());
         $userProfile->setLastName($user->getLastName());
         $userProfile->setEmail($user->getEmail());
         // facebook doesn't allow login with not verified email
         if (!empty($user->getEmail())) {
             $userProfile->setEmailVerified(true);
         }
         return $userProfile;
     } catch (FacebookSDKException $e) {
         return null;
     }
 }
 /**
  * Index action
  * Checks what needs to be done
  * Creating a new user or login
  */
 public function indexAction()
 {
     $facebookHelper = $this->facebook->getRedirectLoginHelper();
     try {
         $accessToken = $facebookHelper->getAccessToken();
         if (isset($accessToken)) {
             $facebookUser = $this->facebook->get('/me?fields=id,first_name,middle_name,last_name,email', $accessToken)->getGraphUser();
             $customer = $this->_getCustomer();
             $websiteId = Mage::app()->getWebsite()->getId();
             if ($websiteId) {
                 $customer->setWebsiteId($websiteId);
             }
             $customer->loadByEmail($facebookUser->getEmail());
             if ($customer->getId()) {
                 $this->_login($facebookUser, $customer);
             } else {
                 $this->_create($facebookUser, $customer);
             }
         } else {
             $this->_redirect('customer/account/login');
         }
     } catch (Exception $e) {
         $this->_redirect('customer/account/login');
     }
 }
Ejemplo n.º 8
0
 /**
  * @inheritdoc
  */
 public function readStream()
 {
     $response = $this->facebook->get('/' . $this->page_id . '/posts?limit=' . $this->limit, $this->accesstoken);
     $posts = $response->getDecodedBody()['data'];
     $result = [];
     foreach ($posts as $post) {
         $result[] = new GenericPost(new \DateTime($post['created_time']), strstr($post['message'], "\n", true) ?: $post['message'], 'https://www.facebook.com/' . $post['id'], 'facebook');
     }
     return $result;
 }
 /**
  * {@inheritDoc}
  */
 public function loadUserByUsername($username)
 {
     try {
         $response = $this->facebook->get('/' . $username);
         return $response->getGraphNode(FacebookUser::class);
     } catch (FacebookResponseException $e) {
         $this->logger->info(sprintf('FacebookResponseException: %s', $e->getMessage()));
     } catch (FacebookSDKException $e) {
         $this->logger->warning(sprintf('FacebookSDKException: %s', $e->getMessage()));
     }
     throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
 }
Ejemplo n.º 10
0
 /**
  * Create a user account for the authenticated Facebook user.
  *
  * @return \Models\User
  * @throws \Facebook\Exceptions\FacebookSDKException
  * @throws \Facebook\Exceptions\FacebookSDKException
  * @throws \App\Exceptions\AccountDeactivatedException
  */
 public function registerWithFacebook()
 {
     // Load up the facebook sdk
     $fb = new Facebook(['app_id' => env('FACEBOOK_APP_ID'), 'app_secret' => env('FACEBOOK_APP_SECRET'), 'default_graph_version' => env('FACEBOOK_DEFAULT_GRAPH_VERSION')]);
     // Retrieve the access token
     $jsHelper = $fb->getJavaScriptHelper();
     $accessToken = $jsHelper->getAccessToken();
     if (!$accessToken) {
         throw new FacebookSDKException('The access token is invalid.');
     }
     // Get the profile info
     $profileResponse = $fb->get('/me', $accessToken);
     if ($profileResponse->getHttpStatusCode() != 200) {
         throw new FacebookSDKException('We could not retrieve your profile info.');
     }
     $profileInfo = $profileResponse->getGraphUser();
     // Check if the user is already registered
     $user = User::findBySocialAccountIdAndTypeId($profileInfo['id'], SocialAccountType::FACEBOOK);
     if ($user && !$user->active) {
         throw new AccountDeactivatedException();
     }
     // Create a new user account or update the existing one
     $user = $user ?: new User();
     $user->social_account_type_id = SocialAccountType::FACEBOOK;
     $user->social_account_id = $profileInfo['id'];
     $user->name = $profileInfo['name'];
     $user->email = isset($profileInfo['email']) ? $profileInfo['email'] : '';
     $user->location_name = isset($profileInfo['location']) ? $profileInfo['location']->getName() : '';
     $user->loggedin_at = date('Y-m-d H:i:s');
     $user->active = true;
     $user->save();
     return $user;
 }
Ejemplo n.º 11
0
 public function facebook()
 {
     $fb = new Facebook\Facebook(['app_id' => '144053429274589', 'app_secret' => '4ef6916e238aff3b6726dac08b853135', 'default_graph_version' => 'v2.4', 'default_access_token' => 'CAACDBA17B90BAKI0aOXR1vF5zDtZCOKPbWSXopnvvNpBTHZARXVhUVrZBAXn4CB1ZBgsyk13ZA38uZAWoffwchukfajiIOG7cYrNEEAm0CdlHgwDRWeBuD0OZCfT6PB6U2vsE3O45jTgx0YTc24TXEqyZC1ZBIjc9GxD3aSv6WAyIWsZCpAcbnxYPNCdL389FxaRsZD']);
     try {
         $response = $fb->get('/me?fields=id,name,email');
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     $me = $response->getGraphUser();
     $name = $me['name'];
     $email = $me['email'];
     $u_name = preg_replace('/@.*$/', '', $me['email']);
     $user = new User();
     $user->name = $name;
     $user->type = 'general';
     $user->register_type = 'facebook';
     $user->username = $u_name;
     $user->email = $email;
     $user->password = bcrypt($u_name);
     $user->save();
     $lastInsertedId = $user->id;
     $profile = new Profile();
     $profile = $user->profile()->save($profile);
     $credentials = array('email' => $email, 'password' => $u_name);
     if (Auth::attempt($credentials)) {
         //return Redirect::to('home');
         return redirect()->intended('home');
     }
     //echo '<pre>'; print_r($new_name);
     //echo 'Logged in as ' . $me['email'];
 }
Ejemplo n.º 12
0
 /**
  */
 public function retriveProfile()
 {
     $this->logger->debug('retriveProfile ' . "/me?fields=id,name,email,gender");
     $response = $this->facebook->get("/me?fields=id,name,email,gender", $this->getAccessToken());
     $this->user = $response->getGraphUser();
     $userArray = json_decode($this->user->asJson(), true);
     $this->logger->debug(print_r($userArray, true));
     // remove location info if set.
     if (isset($userArray['location'])) {
         unset($userArray['location']);
     }
     $userArray['ip'] = '' . $this->get_ip_address();
     // upsert user
     $this->upsertUser($userArray);
     return $this->user;
 }
 public function fbUserInfoAction()
 {
     $fb = new Facebook(['app_id' => '1475718472749501', 'app_secret' => 'a67fee083c27186f52030ff3a72f24f9', 'default_graph_version' => 'v2.4']);
     try {
         $helper = $fb->getJavaScriptHelper();
         $accessToken = $helper->getAccessToken();
         $fb->setDefaultAccessToken((string) $accessToken);
         $response = $fb->get('/me?locale=en_US&fields=name,email');
         $userNode = $response->getGraphUser();
         $email = $userNode->getField('email');
         $name = $userNode->getField('name');
         $arr = explode("@", $email);
         $login = $arr[0];
         $arr2 = explode(" ", $name);
         $firstname = $arr2[0];
         $lastname = $arr2[1];
         return new JsonResponse(['firstname' => $firstname, 'lastname' => $lastname, 'login' => $login, 'email' => $email]);
     } catch (FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     exit;
 }
Ejemplo n.º 14
0
 /**
  * @param string $method
  * @param string $endpoint
  * @param array  $parameters
  * @param string $token
  *
  * @return \Facebook\FacebookResponse
  */
 private function executeFacebookRequest($method, $endpoint, array $parameters = [], $token = null)
 {
     if (is_callable($this->logCallback)) {
         //used only for debugging:
         call_user_func($this->logCallback, 'Facebook API request', func_get_args());
     }
     if (!$token) {
         $token = $this->appToken;
     }
     switch ($method) {
         case 'GET':
             $response = $this->fb->get($endpoint, $token);
             break;
         case 'POST':
             $response = $this->fb->post($endpoint, $parameters, $token);
             break;
         case 'DELETE':
             $response = $this->fb->delete($endpoint, $parameters, $token);
             break;
         default:
             throw new \Exception("Facebook driver exception, please add support for method: " . $method);
             break;
     }
     if (is_callable($this->logCallback)) {
         call_user_func($this->logCallback, 'Facebook API response', $response->getDecodedBody());
     }
     return $response;
 }
 /**
  * Get email address or name based on access token.
  *
  * @param AccessToken $accessToken
  *
  * @return mixed
  */
 protected function _getUsername($accessToken)
 {
     $oAuth2Client = $this->_facebook->getOAuth2Client();
     $tokenMetadata = $oAuth2Client->debugToken($accessToken);
     $user = $this->_facebook->get('/' . $tokenMetadata->getUserId() . '?fields=name,email', $accessToken)->getGraphUser();
     return $user->getField('email') !== null ? $user->getField('email') : $user->getField('name');
 }
 /**
  * Get all images from the timeline picture album as an array with the fields "ID", "Name" and "Source".
  * @param int $limit
  * @return ArrayList
  */
 public function requestTimelinePics($limit = 100, $countLikes = false)
 {
     try {
         // Make the actual API request
         $response = $this->api->get('/' . $this->albumId . '/photos?fields=name,source,created_time&limit=' . $limit);
         // Get data of album
         $album = json_decode($response->getBody())->data;
         // Populate ArrayList
         $pA = ArrayList::create();
         $photo = array();
         foreach ($album as $picture) {
             $photo['ID'] = $picture->id;
             $photo['Source'] = $picture->source;
             $photo['Date'] = date('d-m-Y H:i', strtotime($picture->created_time));
             if (isset($picture->name)) {
                 $photo['Name'] = $this->makeLinks($picture->name);
             }
             // Count likes
             if ($countLikes) {
                 $photo['Likes'] = count(json_decode($this->api->get($picture->id . '/likes')->getBody())->data);
             }
             $pA->add($photo);
         }
         return $pA;
     } catch (FacebookSDKException $e) {
         user_error($e->getMessage());
     }
 }
Ejemplo n.º 17
0
 /**
  * Make an API call.
  *
  * @param   string  $endpoint
  * @param   array   $fields
  * @param   string  $accessToken
  * @return  \Facebook\FacebookResponse
  * @throws  SystemException
  */
 public function get($endpoint, array $fields = null, $accessToken = null)
 {
     try {
         if ($fields) {
             $endpoint .= '?fields=' . implode(',', $fields);
         }
         $response = $this->fb->get($endpoint, $accessToken);
     } catch (FacebookResponseException $e) {
         Log::error('Facebook Graph API call failed when doing a get request.', ['endpoint' => $endpoint, 'error' => $e->getMessage(), 'code' => $e->getCode(), 'subcode' => $e->getSubErrorCode(), 'status' => $e->getHttpStatusCode(), 'type' => $e->getErrorType()]);
         throw new SystemException('Facebook Graph API error: ' . $e->getMessage());
     } catch (FacebookSDKException $e) {
         Log::error('Facebook SDK error when doing a get request.', ['endpoint' => $endpoint, 'error' => $e->getMessage(), 'code' => $e->getCode()]);
         throw new SystemException('Facebook SDK error: ' . $e->getMessage());
     }
     return $response;
 }
 /**
  * @return array|mixed
  */
 public function newsFeed()
 {
     $request = new Facebook($this->fbConfig);
     $response = $request->get($this->pageId . '/posts?limit=5');
     $postFeeds = json_decode($response->getGraphEdge()->asJson());
     return $postFeeds;
 }
Ejemplo n.º 19
0
 public function facebookLogin(Request $request, $offline = null)
 {
     if ($offline) {
         $facebook_id = '129795977365516';
         $name = 'Offline User';
         $gender = 'male';
     } else {
         $fb = new Facebook\Facebook(['app_id' => config('services.facebook.client_id'), 'app_secret' => config('services.facebook.client_secret'), 'default_graph_version' => 'v2.5', 'default_access_token' => $request->input('access_token')]);
         try {
             $response = $fb->get('/me?fields=id,name,gender,email');
         } catch (Facebook\Exceptions\FacebookResponseException $e) {
             return response('Graph returned an error: ' . $e->getMessage(), 500);
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             return response('Facebook SDK returned an error: ' . $e->getMessage(), 500);
         }
         $user = $response->getGraphUser();
         $facebook_id = $user->getId();
         $name = $user->getName();
         $gender = $user->getProperty('gender');
     }
     $participant = Participant::where('facebook_id', $facebook_id)->first();
     if ($participant) {
         session(['participantId' => $participant->id]);
         return response()->json(['alreadyExists' => true]);
     }
     $participant = new Participant();
     $participant->name = $name;
     $participant->facebook_id = $facebook_id;
     $participant->gender = $gender;
     session(['participant' => $participant]);
     return response()->json(['alreadyExists' => false]);
 }
Ejemplo n.º 20
0
 public function getProfile($token)
 {
     if (empty($this->profile) === true) {
         $fb = new Facebook(['app_id' => Config::get('facebook.app.id'), 'app_secret' => Config::get('facebook.app.secret'), 'default_access_token' => $token]);
         $profile = $fb->get('/me')->getGraphUser();
         $this->profile = array('provider' => self::PROVIDER_NAME, 'id' => $profile->getField('id'), 'email' => $profile->getField('email'), 'firstName' => $profile->getFirstName(), 'lastName' => $profile->getLastName());
     }
     return $this->profile;
 }
Ejemplo n.º 21
0
 public function index()
 {
     $fb = new Facebook(['app_id' => '178541382481710', 'app_secret' => '00ad5032a61d3ca526c6693f006db028', 'default_graph_version' => 'v2.4']);
     $fb->setDefaultAccessToken('178541382481710|4K7VTpySNyFIp2gIKlAY3T5pXAc');
     $response = $fb->get('/LesGetsOfficiel/feed?fields=id,message,full_picture,link,type&limit=100');
     $response = $response->getDecodedBody();
     debug($response);
     die;
 }
Ejemplo n.º 22
0
 public function facebook()
 {
     $this->load->library('session');
     $fb = new Facebook(['app_id' => '1068933233152181', 'app_secret' => 'cb86048c2ca95c034a26fe239e48a8eb']);
     /*
      *
      *@Trying to get and set the f*****g token
      *
      */
     if (null !== $this->session->userdata('fb_token') && !empty($this->session->userdata('fb_token'))) {
         $accessToken = $this->session->userdata('fb_token');
     } else {
         $jsHelper = $fb->getJavaScriptHelper();
         // @TODO This is going away soon
         $facebookClient = $fb->getClient();
         try {
             $accessToken = $jsHelper->getAccessToken($facebookClient);
             $this->session->set_userdata('fb_token', $accessToken);
         } catch (Facebook\Exceptions\FacebookResponseException $e) {
             // When Graph returns an error
             echo 'Graph returned an error: ' . $e->getMessage();
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             // When validation fails or other local issues
             echo 'Facebook SDK returned an error: ' . $e->getMessage();
         }
     }
     //@TODO exchange echo for error
     /*
      *
      *@After we get the token, get user name & email with it,
      *	assign it a pin code, register him in the db + token + time of creation 
      *	redirect him to upload controller
      */
     if (isset($accessToken)) {
         // Logged in.
         //@TODO set a time=10min session if !sess[time]
         //@TODO check for Message: Error validating access token: Session has expired on Sunday, 20-Dec-15 13:00:00 PST. The current time is Sunday, 20-Dec-15 13:03:57 PST.
         $response = $fb->get('/me?locale=en_US&fields=name,email', $accessToken);
         $userNode = $response->getGraphUser();
         $this->session->set_userdata('name', $userNode['name']);
         //@TODO figure out a way to use pin once, maybe through session.
         $data['access_token'] = $accessToken;
         $this->load->model('register_model');
         //Create & check if pin is in use
         do {
             $pin = $this->generate_pin();
         } while ($this->register_model->check_pin($pin) === FALSE);
         if ($this->register_model->add($userNode['name'], $userNode['email'], $pin)) {
             $this->session->set_userdata('pin', $pin);
             $this->session->redirect(site_url('/upload'));
         }
     } else {
         //@TODO CREATE AN ERROR PAGE
         echo "Unable to read JavaScript SDK cookie";
     }
 }
Ejemplo n.º 23
0
 /**
  * Return info about login user
  * @return array
  * @throws Exception
  */
 public function getMe()
 {
     $client = $this->fb->getOAuth2Client();
     $accessTokenObject = $this->helper->getAccessToken();
     if ($accessTokenObject == null) {
         throw new Exception("User not allowed permissions");
     }
     try {
         $accessToken = $client->getLongLivedAccessToken($accessTokenObject->getValue());
         $response = $this->fb->get('/me?fields=id,name,email', $accessToken);
         return $response->getDecodedBody();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         throw new Exception($e->getMessage());
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         throw new Exception($e->getMessage());
     }
 }
 /**
  * @param EventData $eventData
  * @return string
  */
 public function populateFacebookEvent(EventData $eventData)
 {
     $facebookEvent = $eventData->getFacebookEvent();
     $fetchFields = ['id', 'place', 'description', 'ticket_uri', 'start_time', 'end_time', 'attending_count'];
     try {
         $facebookEventData = $this->fb->get('/' . $facebookEvent->getFacebookEventId() . '/?fields=' . implode(',', $fetchFields));
     } catch (FacebookResponseException $ex) {
         return $ex->getMessage();
         // @TODO: Log stack trace.
     }
     $facebookEventData = $facebookEventData->getGraphNode();
     if ($facebookEventData->getField('description')) {
         $facebookEvent->setDescription($facebookEventData->getField('description'));
     }
     if ($facebookEventData->getField('ticket_uri')) {
         $facebookEvent->setTicketUrl($facebookEventData->getField('ticket_uri'));
     }
     if ($facebookEventData->getField('start_time')) {
         $facebookEvent->setStartTime($facebookEventData->getField('start_time'));
     }
     if ($facebookEventData->getField('end_time')) {
         $facebookEvent->setEndTime($facebookEventData->getField('end_time'));
     }
     $facebookEvent->setAttendingCount($facebookEventData->getField('attending_count'));
     if ($facebookEventPlace = $facebookEventData->getField('place')) {
         $street = [];
         if ($facebookEventPlace->getField('name')) {
             $street[] = $facebookEventPlace->getField('name');
         }
         if ($facebookEventPlaceLoc = $facebookEventPlace->getField('location')) {
             if ($facebookEventPlaceLoc->getField('street')) {
                 $street[] = $facebookEventPlaceLoc->getField('street');
             }
             if ($facebookEventPlaceLoc->getField('latitude') && $facebookEventPlaceLoc->getField('longitude')) {
                 $facebookEvent->setLatitude($facebookEventPlaceLoc->getField('latitude'));
                 $facebookEvent->setLongitude($facebookEventPlaceLoc->getField('longitude'));
             }
         }
         $facebookEvent->setStreet(implode(', ', $street));
     }
     $this->em->persist($facebookEvent);
     $this->em->flush($facebookEvent);
 }
Ejemplo n.º 25
0
 public function loginCallback()
 {
     $fb = new Facebook(['app_id' => '709854915792963', 'app_secret' => '74e61a2eaf730835d8b4b39ec3aede8e', 'default_graph_version' => 'v2.2']);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     if (isset($accessToken)) {
         // Logged in!
         $access_token = (string) $accessToken;
         // Now you can redirect to another page and use the
         // access token from $_SESSION['facebook_access_token']
     }
     $response = $fb->get('/me?fields=id,name,email', $access_token);
     $me = $response->getGraphUser();
     $uid = $me['id'];
     //return $uid;
     if ($uid == 0) {
         return Redirect::to('/')->with('message', 'There was an error');
     }
     //return $user;
     $profile = App\Profile::whereUid($uid)->first();
     //if user does not exist create user
     if (empty($profile)) {
         $user = new App\User();
         $existinguser = App\User::whereemail($me['email'])->first();
         if (empty($existinguser)) {
             $user->name = $me['name'];
             $user->email = $me['email'];
             //$user->uid=$uid;
             $user->save();
         }
         $profile = new App\Profile();
         $profile->photo = 'https://graph.facebook.com/' . $me['id'] . '/picture?type=large';
         $user->email = $me['email'];
         $profile->uid = $uid;
         $profile->username = $me['name'];
         $profile = $user->profiles()->save($profile);
     }
     //else only update his access token
     $profile->access_token = $access_token;
     $profile->save();
     $user = $profile->users;
     //login the user
     Auth::login($user);
     return Redirect::to('/dashboard');
 }
 /**
  * @param string $token
  * @return array
  */
 public function getProfileData($token)
 {
     $fb = new Facebook(['app_id' => Config::inst()->get('FacebookApi', 'AppID'), 'app_secret' => Config::inst()->get('FacebookApi', 'AppSecret'), 'default_graph_version' => 'v2.2']);
     try {
         // Returns a `Facebook\FacebookResponse` object
         $fieldList = ['id', 'first_name', 'last_name', 'location', 'hometown', 'gender', 'email', 'birthday', 'about', 'website'];
         $profileResponse = $fb->get('/me?fields=' . implode(',', $fieldList), $token);
         $imageResponse = $fb->get('/me/picture?width=1000&redirect=false', $token);
     } catch (FacebookResponseException $e) {
         SS_Log::log("Graph returned an error: " . $e->getMessage(), SS_Log::INFO);
         return false;
     } catch (FacebookSDKException $e) {
         SS_Log::log('Facebook SDK returned an error: ' . $e->getMessage(), SS_Log::WARN);
         return false;
     }
     $user = $profileResponse->getGraphUser();
     $imageData = $imageResponse->getGraphNode();
     $userData = ['FirstName' => $user->getFirstName(), 'Surname' => $user->getLastName(), 'Email' => $user->getEmail(), 'Alias' => $user->getFirstName(), 'BirthYear' => $user->getBirthday() ? $user->getBirthday()->format("Y") : null, 'Description' => $user->getField('about'), 'Gender' => $user->getGender(), 'ProfileImage' => $imageData->getField('url', null)];
     return $userData;
 }
Ejemplo n.º 27
0
 /**
  *
  */
 public function getAccountInfo()
 {
     try {
         $response = $this->facebook->get('/me');
         $me = $response->getGraphUser();
         // Output user name.
         return ['remote_uid' => $me->getId(), 'remote_service' => 'facebook', 'remote_verified' => true, 'email' => $me->getField('email'), 'name' => $me->getName(), 'facebook' => $me->getLink(), 'first_name' => $me->getFirstName(), 'last_name' => $me->getLastName(), 'gender' => $me->getGender(), 'timezone' => $me->getField('timezone'), 'locale' => $me->getField('locale'), 'bod' => $me->getBirthday()];
     } catch (\Exception $ex) {
         // Some other error occurred.
         throw new \RuntimeException($ex->getMessage());
     }
 }
Ejemplo n.º 28
0
 public function getFriend()
 {
     try {
         $session = new Session();
         $session->start();
     } catch (\Exception $ex) {
     }
     $appId = $this->container->getParameter("gfb_social_client.facebook.app_id");
     $appSecret = $this->container->getParameter("gfb_social_client.facebook.app_secret");
     $version = $this->container->getParameter("gfb_social_client.facebook.version");
     $facebook = new Facebook(array("app_id" => $appId, "app_secret" => $appSecret, "default_graph_version" => $version));
     if (!isset($_SESSION[self::FB_ACCESS_TOKEN_SESSION])) {
         $url = $this->router->generate("gfb_social_client_facebook_login");
         header("Location: {$url}");
         exit;
     }
     $response = $facebook->get("/me/friends", $_SESSION[self::FB_ACCESS_TOKEN_SESSION], null, $version);
     return $response->getGraphEdge()->asArray();
     $response = $facebook->get("/me/taggable_friends", $_SESSION[self::FB_ACCESS_TOKEN_SESSION], null, $version);
     $graphNode = $response->getGraphEdge();
     return $graphNode->all();
 }
Ejemplo n.º 29
0
 /**
  * Execute the job.
  *
  * @return void
  */
 public function handle(Facebook $fb)
 {
     try {
         $response = $fb->get('/me?fields=' . implode($this->changedFields, ','), $this->user->token)->getGraphUser();
     } catch (FacebookAuthenticationException $e) {
         return false;
     }
     foreach ($response as $field => $value) {
         if (in_array($field, $this->changedFields)) {
             $this->user->{$field} = $value;
         }
     }
     $this->user->save();
 }
Ejemplo n.º 30
0
 /**
  * @Route("/callback", name="callback")
  */
 public function callbackAction(Request $request)
 {
     $fb = new Facebook(['app_id' => $this->container->getParameter('fb_app_id'), 'app_secret' => $this->container->getParameter('fb_app_secret'), 'default_graph_version' => 'v2.5']);
     $accessToken = $fb->getJavaScriptHelper()->getAccessToken();
     if (!$accessToken) {
         throw new \RuntimeException('No cookie set or no OAuth data could be obtained from cookie');
     }
     $userInfo = $fb->get('/me?fields=id,name,email', $accessToken->getValue())->getDecodedBody();
     if (!isset($userInfo['id'])) {
         throw new \RuntimeException('Bad credentials');
     }
     $this->storeUserInfo($userInfo);
     return $this->redirectToRoute('homepage');
 }