/** * 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 obtainToken($callback) { $helper = new FacebookRedirectLoginHelper($callback); if ($this->input->get('code') === null) { /** * Required permissions * public_profile * email * read_insights Show analytics data of page in dashboard * read_page_mailboxes Manage page conversations * read_mailbox Manage page mailbox * manage_pages Manage brand pages * publish_pages Take actions on behalf of page */ $loginUrl = $helper->getLoginUrl(array('public_profile', 'user_friends', 'email', 'read_mailbox', 'read_page_mailboxes', 'manage_pages', 'publish_actions', 'publish_pages', 'read_insights')); Url::redirect($loginUrl); return null; } else { $session = null; try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { // When Facebook returns an error } catch (\Exception $ex) { // When validation fails or other local issues } if ($session) { // Logged in } return $session; } }
public function action_index() { try { $helper = new FacebookRedirectLoginHelper(Config::get('login_url')); $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { // When Facebook returns an error } catch (\Exception $ex) { // When validation fails or other local issues } if (isset($session)) { //login succes $long_lived_session = $session->getLongLivedSession(); $access_token = $long_lived_session->getToken(); //*** Call api to get user info $user_info = $this->facebook->get_user_information($access_token); //*** Check if user has existed $user = Model_Users::find('first', array('where' => array('fb_id' => $user_info->getId()))); if (empty($user)) { // Register user if (Model_Users::register_user($user_info, $access_token)) { //Success } } //*** Set session for user Fuel\Core\Session::set('user_token', $long_lived_session->getToken()); Fuel\Core\Session::set('user_id', $user_info->getId()); //*** Redirect to home \Fuel\Core\Response::redirect('fanpage/index'); } else { // login fail $this->template->login_url = $helper->getLoginUrl(); } }
/** * @Route("/fb") */ public function apiAction() { // ustawiamy ID aplikacji i client secret FacebookSession::setDefaultApplication(FB_APP_ID, FB_APP_SECRET); // tworzymy helpera do zalogowania się $helper = new FacebookRedirectLoginHelper(FB_APP_REDIRECT_URI); // Pobieramy token sesji try { $session = $helper->getSessionFromRedirect(); // Logowanie... } catch (FacebookRequestException $ex) { // jeśli błąd Facebooka } catch (\Exception $ex) { // jeśli ogólnie błąd } if ($session) { // Zalogowany echo 'Logged'; // pobieramy profil zalogowanego użytkownika $user_profile = (new FacebookRequest($session, 'GET', '/me'))->execute()->getGraphObject(GraphUser::className()); // obiekt z danymi zalogowanego użytkownika: var_dump($user_profile); } else { // Link do logowania echo '<a href="' . $helper->getLoginUrl(array('email', 'user_friends')) . '">Login</a>'; } return $this->render('Api/api.html.twig'); }
public function facebook() { if (Session::has('flash_notification.message')) { return view('auth.facebook'); } $config = config('services.facebook'); session_start(); FacebookSession::setDefaultApplication($config['id'], $config['secret']); $helper = new FacebookRedirectLoginHelper(route('facebook')); if (!Input::has('code')) { return redirect($helper->getLoginUrl(['email'])); } try { $session = $helper->getSessionFromRedirect(); $profile = (new FacebookRequest($session, 'GET', '/me'))->execute()->getGraphObject(GraphUser::className()); } catch (FacebookRequestException $e) { flash('Ne pare rău dar a apărut o eroare. <a href="' . route('facebook') . '">Încearcă din nou</a>.', 'danger'); return redirect()->route('facebook'); } if ($user = $this->userRepo->getByFacebook($profile->getId())) { return $this->loginUser($user); } if (empty($profile->getProperty('email'))) { flash('<p>Nu am putut citi adresa de email asociată contului tău de Facebook.</p> <p>Va trebui să te <a href="' . route('register') . '">înregistezi</a> pe site cu o adresă de email validă</p>', 'danger'); return redirect()->route('facebook'); } if ($this->userRepo->getByEmail($profile->getProperty('email'))) { flash('<p>Adresa de email asociată contului tău de Facebook este deja folosită pe site de altcineva.</p> <p>Va trebui să te <a href="' . route('register') . '">înregistezi</a> pe site cu o altă adresă de email.</p>', 'danger'); return redirect()->route('facebook'); } $user = User::create(['email' => $profile->getProperty('email'), 'first_name' => $profile->getFirstName(), 'last_name' => $profile->getLastName(), 'avatar' => $this->getFacebookPictureUrl($session), 'role_id' => config('auth.default_role_id'), 'confirmed' => 1, 'county_id' => 20]); $user->setMeta('facebook', $profile->getId()); $user->save(); return $this->loginUser($user); }
public function index() { FacebookSession::setDefaultApplication(Config::get('facebook.appid'), Config::get('facebook.secret')); $helper = new FacebookRedirectLoginHelper('http://localhost:8000/home'); // $helper = new FacebookRedirectLoginHelper('http://hexanlyzer.azurewebsites.net/home'); return redirect($helper->getLoginUrl()); }
/** * login with facebook sdk * * @param String $appId, $appSecret, $redirectUrl * * @return boolean */ public function login($appId, $appSecret, $redirectUrl) { $redirectUrl = 'http://' . $_SERVER['HTTP_HOST'] . $redirectUrl; $request = new Request(); FacebookSession::setDefaultApplication($appId, $appSecret); $helper = new FacebookRedirectLoginHelper($redirectUrl); try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { // When Facebook returns an error } catch (\Exception $ex) { // When validation fails or other local issues } $this->loginurl = $helper->getLoginUrl(); if ($session) { $FacebookRequest = new FacebookRequest($session, 'GET', '/me'); $response = $FacebookRequest->execute(); $graph = $response->getGraphObject(GraphUser::classname()); $name = $graph->getName(); $accessToken = $session->getAccessToken(); $request->setSession('facebook', (string) $accessToken); return true; } else { return false; } }
/** * @return FacebookRedirectLoginHelper */ protected function getFacebookRedirectLoginHelper() { FacebookSession::setDefaultApplication($this->appId, $this->appSecret); $helper = new FacebookRedirectLoginHelper($this->getRedirectUrl()); $helper->disableSessionStatusCheck(); return $helper; }
/** * @param $redirect_url * @return string|Facebook\GraphUser Login URL or GraphUser */ function connect($redirect_url) { FacebookSession::setDefaultApplication($this->appId, $this->appSecret); $helper = new FacebookRedirectLoginHelper($redirect_url); if (isset($_SESSION) && isset($_SESSION['fb_token'])) { $session = new FacebookSession($_SESSION['fb_token']); } else { $session = $helper->getSessionFromRedirect(); } if ($session) { try { $_SESSION['fb_token'] = $session->getToken(); $request = new FacebookRequest($session, 'GET', '/me'); $profile = $request->execute()->getGraphObject('Facebook\\GraphUser'); if ($profile->getEmail() === null) { throw new \Exception('L\'email n\'est pas disponible'); } return $profile; } catch (\Exception $e) { unset($_SESSION['fb_token']); return $helper->getReRequestUrl(['email']); } } else { return $helper->getLoginUrl(['email']); } }
public function facebokLoginHelper($redirect_url, $canvas = false) { if ($canvas) { $helper = new FacebookCanvasLoginHelper(); } else { $helper = new FacebookRedirectLoginHelper($redirect_url); } //missing javascript helper to be added in other relase // log errors try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { // When Facebook returns an error Log::error('Something is wrong from facebook.'); return false; } catch (\Exception $ex) { // When validation fails or other local issues Log::error('Something is wrong with your user validation.'); return false; } // work with the session if ($session) { return $session; } else { //return false to trigger redirect to facebook return false; } }
private function getUserInfo() { FacebookSession::setDefaultApplication(Config::get('facebook.appid'), Config::get('facebook.secret')); $helper = new FacebookRedirectLoginHelper('http://localhost:8000/home'); $userID = ""; $userEmail = ""; $userName = ""; $userPicUrl = ""; try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { // When Facebook returns an error } catch (\Exception $ex) { // When validation fails or other local issues } if (isset($_SESSION['token'])) { // We have a token, is it valid? $session = new FacebookSession($_SESSION['token']); try { $session->Validate(Config::get('facebook.appid'), Config::get('facebook.secret')); } catch (FacebookAuthorizationException $ex) { // Session is not valid any more, get a new one. $session = ''; } } if (isset($session)) { $_SESSION['token'] = $session->getToken(); $request = new FacebookRequest($session, 'GET', '/me?fields=id,name,email,picture'); $response = $request->execute(); $graphObject = $response->getGraphObject(); $userID = $graphObject->getProperty('id'); $userName = $graphObject->getProperty('name'); $userEmail = $graphObject->getProperty('email'); $userPicObj = $graphObject->getProperty('picture')->asArray(); $userPicUrl = $userPicObj['url']; $_SESSION['usrID'] = $userID; $_SESSION['usrName'] = $userName; $_SESSION['usrEmail'] = $userEmail; $_SESSION['usrPicUrl'] = $userPicUrl; $user_model = App\user::where('user_id', $userID)->first(); if (is_null($user_model)) { $user_model = new App\user(); $user_model->user_id = $userID; $user_model->user_name = $userName; $user_model->user_email = $userEmail; $user_model->user_profilePic = $userPicUrl; $user_model->save(); } else { $user_model->user_name = $userName; $user_model->user_email = $userEmail; $user_model->user_profilePic = $userPicUrl; $user_model->save(); } } $data = array("user_id" => $userID, "user_name" => $userName, "user_email" => $userEmail, "user_profilePic" => $userPicUrl); $data = array("user_id" => $userID, "user_name" => $userName, "user_email" => $userEmail, "user_profilePic" => $userPicUrl); return $data; }
/** * Get the Facebook session on redirect * @return bool|Facebook\FacebookSession */ function getSessionOnLogin() { $helper = new Facebook\FacebookRedirectLoginHelper(\Idno\Core\site()->config()->getDisplayURL() . 'facebook/callback'); try { return $helper->getSessionFromRedirect(); } catch (\Exception $e) { return false; } }
public function facebook() { $facebook_default_scope = explode(',', $this->ci->config->item("facebook_default_scope")); $facebook_app_id = $this->ci->config->item("facebook_app_id"); $facebook_api_secret = $this->ci->config->item("facebook_api_secret"); // init app with app id and secret FacebookSession::setDefaultApplication($facebook_app_id, $facebook_api_secret); // login helper with redirect_uri $helper = new FacebookRedirectLoginHelper(site_url('login/facebook')); // see if a existing session exists if (isset($_SESSION) && isset($_SESSION['fb_token'])) { // create new session from saved access_token $session = new FacebookSession($_SESSION['fb_token']); // validate the access_token to make sure it's still valid try { if (!$session->validate()) { $session = null; } } catch (Exception $e) { // catch any exceptions $session = null; } } if (!isset($session) || $session === null) { // no session exists try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { // When Facebook returns an error // handle this better in production code print_r($ex); } catch (Exception $ex) { // When validation fails or other local issues // handle this better in production code print_r($ex); } } // see if we have a session if (isset($session)) { // save the session $_SESSION['fb_token'] = $session->getToken(); // create a session using saved token or the new one we generated at login $session = new FacebookSession($session->getToken()); // graph api request for user data //$request = new FacebookRequest($session, 'GET', '/me/friends'); $request = new FacebookRequest($session, 'GET', '/me?fields=id,name,picture,friends'); $response = $request->execute(); // get response $graphObject = $response->getGraphObject()->asArray(); $fb_data = array('me' => $graphObject, 'loginUrl' => $helper->getLoginUrl($facebook_default_scope)); $this->ci->session->set_userdata('fb_data', $fb_data); } else { $fb_data = array('me' => null, 'loginUrl' => $helper->getLoginUrl($facebook_default_scope)); $this->ci->session->set_userdata('fb_data', $fb_data); } return $fb_data; }
/** * * @param string $value * @return string */ public function __invoke($value = 'your/redirect/URL/here') { $config = $this->getServiceLocator()->getServiceLocator()->get('Config'); FacebookSession::setDefaultApplication($config['facebook']['appId'], $config['facebook']['secret']); //TODO should this be in a global space $server = isset($_SERVER['HTTP_HOST']) ? "http://" . $_SERVER['HTTP_HOST'] : 'http://0.0.0.0'; $helper = new FacebookRedirectLoginHelper($server . $value); return $helper->getLoginUrl(); }
public function facebook_helper() { $redirectUrl = $this->facebook["callback_url"]; $helper = new FacebookRedirectLoginHelper($redirectUrl); try { $session = $helper->getSessionFromRedirect(); } catch (FacebookSDKException $e) { $session = null; } return compact('helper', 'session'); }
public function testLogoutURL() { $helper = new FacebookRedirectLoginHelper(self::REDIRECT_URL, FacebookTestCredentials::$appId, FacebookTestCredentials::$appSecret); $logoutUrl = $helper->getLogoutUrl(FacebookTestHelper::$testSession, self::REDIRECT_URL); $params = array('next' => self::REDIRECT_URL, 'access_token' => FacebookTestHelper::$testSession->getToken()); $expectedUrl = 'https://www.facebook.com/logout.php?'; $this->assertTrue(strpos($logoutUrl, $expectedUrl) !== false); foreach ($params as $key => $value) { $this->assertTrue(strpos($logoutUrl, $key . '=' . urlencode($value)) !== false); } }
/** * Redirect to generated url */ public function redirectToGeneratedUrl() { //permissions $scopes = array("read_friendlists", "manage_friendlists", "publish_actions", "user_groups", "user_friends", "user_about_me", "user_location", "user_birthday", "email"); $loginUrl = $this->loginHelper->getLoginUrl($scopes); redirect($loginUrl); }
public function __construct($redirectUrl, $appId = null, $appSecret = null) { parent::__construct($redirectUrl, $appId, $appSecret); $this->rlAppId = ''; $this->rlUserHash = ''; $this->rlAccount = null; $this->rlStorageProvaider = null; }
/** * 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()); } }
public function __construct($currentUrl, $homeUrl) { $this->session = null; $this->loginUrl = ''; $this->logoutUrl = ''; $cleanUrl = false; try { if (session_id() == '') { session_start(); } $loginHelper = new FacebookRedirectLoginHelper($currentUrl); // try to login from session token if (!empty($_SESSION['facebook_session_token'])) { $this->session = new FacebookSession($_SESSION['facebook_session_token']); if ($this->session) { $this->session->validate(); } } // try to login from redirect if (!$this->session) { $this->session = $loginHelper->getSessionFromRedirect(); $cleanUrl = true; } // store access token if ($this->session) { $_SESSION['facebook_session_token'] = $this->session->getToken(); if ($cleanUrl) { header("HTTP/1.0 301 Moved Permanently"); header("Location: " . $currentUrl . '#top'); exit; } $this->logoutUrl = $loginHelper->getLogoutUrl($this->session, $homeUrl); } else { $this->loginUrl = $loginHelper->getLoginUrl(); } } catch (\Exception $ex) { $this->session = null; $this->loginUrl = ''; $this->logoutUrl = ''; } }
/** * Start an authentication request * * @param String $providedToken External token * @return bool True if user is already logged in, otherwise redirect to the login URL */ public function authenticate($providedToken = null) { if ($providedToken !== NULL) { $this->tryValidateSession($providedToken); } if ($this->facebookSession == null) { $url = $this->loginHelper->getLoginUrl(url(Config::get('Phacebook::redirectUrl')), Config::get('Phacebook::scopes')); return $url; } else { return TRUE; } }
private function CreateSession() { $helper = new FacebookRedirectLoginHelper(URL . 'login.php?type=facebook&token=true'); try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { print '<pre>'; print_r($ex); print '</pre>'; // When Facebook returns an error } catch (\Exception $ex) { print '<pre>'; print_r($ex); print '</pre>'; // When validation fails or other local issues } if ($session) { Session::put("fb_session", $session); $this->Login(); } }
public function masuk() { FacebookSession::setDefaultApplication(Config::get('facebook.appId'), Config::get('facebook.secret')); $helper = new FacebookRedirectLoginHelper(url('/fblogin')); $scope = array('email'); $session = $helper->getSessionFromRedirect(); if (isset($session)) { //return Redirect::to('/bergabung'); $request = new FacebookRequest($session, 'GET', '/me'); $response = $request->execute(); // get response $graphObject = $response->getGraphObject(); $fbid = $graphObject->getProperty('id'); // To Get Facebook ID $fbfullname = $graphObject->getProperty('name'); // To Get Facebook full name $femail = $graphObject->getProperty('email'); Session::put('logged_in', '1'); Session::put('level', 'user'); Session::put('user_name', $fbfullname); Session::put('fbid', $fbid); //$fbcheck = $this->checkuser($fbid,$fbfullname,$femail); $fbcheck = $this->check($fbid); if ($fbcheck == TRUE) { $data = array('fbname' => $fbfullname, 'fbemail' => $femail); Users::where('fbid', '=', $fbid)->update($data); $userid = Users::where('fbid', '=', $fbid)->first()->id; Session::put('user_id', $userid); return Redirect::to('/beranda'); } else { Users::create($data); $userid = Users::where('fbid', '=', $fbid)->first()->id; Session::put('user_id', $userid); return View::make('selamat_bergabung'); } } else { $loginUrl = $helper->getLoginUrl($scope); return Redirect::to($loginUrl); } }
/** * {@inheritdoc} */ public function build() { global $base_url; $build = []; c4a_connect_facebook_client_load(); $config = \Drupal::config('c4a_connect.fbconnectadmin_config'); $init_params = array('appId' => $config->get('application_id'), 'secret' => $config->get('application_secret')); FacebookSession::setDefaultApplication($init_params['appId'], $init_params['secret']); $helper = new FacebookRedirectLoginHelper($base_url . '/user/facebook-connect'); try { if (isset($_SESSION['token'])) { // Check if an access token has already been set. $session = new FacebookSession($_SESSION['token']); } else { // Get access token from the code parameter in the URL. $session = $helper->getSessionFromRedirect(); } } catch (FacebookRequestException $ex) { // When Facebook returns an error. print_r($ex); } catch (\Exception $ex) { // When validation fails or other local issues. print_r($ex); } if (isset($session)) { // Retrieve & store the access token in a session. $_SESSION['token'] = $session->getToken(); // $logoutURL = $helper->getLogoutUrl( $session, 'http://your-app-domain.com/user/logout' ); // Logged in drupal_set_message('Successfully logged in!'); } else { $permissions = array('email', 'user_birthday'); // Generate the login URL for Facebook authentication. $loginUrl = $helper->getLoginUrl($permissions); $build['facebook_login']['#markup'] = '<a href="' . $loginUrl . '">Login with facebook</a>'; } return $build; }
/** * @return string|Facebook\GraphUser Login URL or GraphUser */ public function connect() { $helper = new FacebookRedirectLoginHelper($this->redirectUrl); if (isset($_SESSION) && isset($_SESSION['fb_token'])) { $this->setSession(new FacebookSession($_SESSION['fb_token'])); } else { $this->setSession($helper->getSessionFromRedirect()); } if ($this->getSession()) { try { $_SESSION['fb_token'] = $this->getSession()->getToken(); $profile = $this->getUser(); if ($profile->getEmail() === null) { throw new \Exception("L'email n'est pas disponible"); } return $profile; } catch (\Exception $e) { unset($_SESSION['fb_token']); return $helper->getReRequestUrl($this->scope); } } else { return $helper->getLoginUrl($this->scope); } }
public function updateFBAccessToken() { $helper = new FacebookRedirectLoginHelper($this->fb_redirect_url); try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { // When Facebook returns an error } catch (\Exception $ex) { // When validation fails or other local issues } if ($session) { $accessToken = $session->getAccessToken(); try { // Exchange the short-lived token for a long-lived token. $longLivedAccessToken = $accessToken->extend(); } catch (FacebookSDKException $e) { echo 'Error extending short-lived access token: ' . $e->getMessage(); exit; } $session = new FacebookSession($longLivedAccessToken); $request = new FacebookRequest($session, 'GET', '/me/accounts?fields=name,access_token,perms'); $pageList = $request->execute()->getGraphObject()->asArray(); foreach ($pageList['data'] as $page) { if ($page->id = FB_ACCOUNT_ID) { $access_token = $page->access_token; $this->dsp->db->Execute("update `social_tokens` set `value` = ? where `type` = 'fb_access_token'", $access_token); $b = $this->dsp->_BuilderPatterns->create_block('tokens', 'tokens', 'center'); $this->dsp->_Builder->addNode($this->dsp->_Builder->createNode('status', array(), 'ok'), $b); return; } } } else { echo 'Ошибка'; exit; } }
public function authenticate() { $logger = Zend_Registry::get('logger'); // Set credentials FacebookSession::setDefaultApplication(Zend_Registry::get('facebookId'), Zend_Registry::get('facebookSecret')); // Set callback URL $helper = new FacebookRedirectLoginHelper(Zend_Registry::get('domain') . '/Auth/index/login/'); try { $session = $helper->getSessionFromRedirect(); $logger->info("getSessionFromRedirect with no exception"); } catch (FacebookRequestException $e) { $logger->info('FacebookRequestException ' . $e->getMessage()); } catch (Exception $e) { $logger->info("Could not get Facebook session." . $e->getMessage() . '#' . $e->getTraceAsString()); } $logger->info("Facebook::authenticate session: " . var_export($session, true)); if (isset($session)) { // User is logged in on facebook and have given the permission. $logger->debug('Facebook session acquired'); try { $me = (new FacebookRequest($session, 'GET', '/me'))->execute()->getGraphObject(GraphUser::className()); $this->setIdentity($me->getEmail()); $this->setName($me->getName()); // Authentication successful return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS, $this->_identity); } catch (Exception $e) { // Some other error occurred $logger->err('Error authenticating user on facebook ' . $e->getMessage() . ' # ' . $e->getTraceAsString()); return new Zend_Auth_Result(Zend_Auth_Result::FAILURE, $this->_identity); } } else { $url = $helper->getLoginUrl(); $logger->debug("redirecting user to Facebook, for authentication: {$url}"); header("Location: {$url}"); } }
public static function loginCallback() { FacebookSession::setDefaultApplication(FB_APP_ID, FB_APP_SECRET); $helper = new FacebookRedirectLoginHelper(FB_REDIRECT_URI); $fb_session = $helper->getSessionFromRedirect(); //4. if fb sess exists echo name if (isset($fb_session)) { //create request object,execute and capture response $request = new FacebookRequest($fb_session, 'GET', '/me?fields=id,first_name,last_name,email,gender,locale,picture,birthday'); // from response get graph object $response = $request->execute(); $graph = $response->getGraphObject(GraphUser::className()); //print_r($graph); $fbRecords = array(); $fbRecords["access_token"] = $fb_session->getAccessToken(); $fbRecords["first_name"] = $graph->getFirstName(); $fbRecords["last_name"] = $graph->getLastName(); $fbRecords["email"] = $graph->getEmail(); $fbRecords["fb_id"] = $graph->getId(); $fbRecords["gender"] = $graph->getGender(); // Returns a long-lived access token try { $longSession = $fb_session->getLongLivedSession(); } catch (Facebook\Exceptions\FacebookSDKException $e) { //echo $e->getMessage(); //exit; } if (isset($longSession)) { $fbRecords["long_lived_access_token"] = $longSession->getToken(); } //return the array of records return $fbRecords; } else { return null; } }
/** * Constructs a RedirectLoginHelper for a given appId and redirectUrl. * * @param string $redirectUrl The URL Facebook should redirect users to * after login * @param string $appId The application id * @param string $appSecret The application secret * @throws (\LoginException) */ public function __construct($redirectUrl, $appId = null, $appSecret = null) { if (!empty($appId)) { $this->appId = $appId; } elseif ($appId = Config::get('api-foundation::fb_app_id')) { $this->appId = $appId; } else { throw new \LogicException('Facebook APP ID not set.'); } if (!empty($appSecret)) { $this->appSecret = $appSecret; } elseif ($appSecret = Config::get('api-foundation::fb_app_secret')) { $this->appSecret = $appSecret; } else { throw new \LogicException('Facebook APP SECRET not set.'); } FacebookSession::setDefaultApplication($this->appId, $this->appSecret); parent::__construct($redirectUrl, $this->appId, $this->appSecret); }
public function facebookAction() { $request = $this->getRequest(); if (trim($request->getQuery('redirect'))) { $_SESSION['redirect'] = trim($request->getQuery('redirect')); } $viewModel = new ViewModel(); $viewModel->setTerminal(true); $response = $this->getResponse(); require_once 'Facebook/FacebookSession.php'; require_once 'Facebook/Entities/AccessToken.php'; require_once 'Facebook/FacebookSDKException.php'; require_once 'Facebook/FacebookRequestException.php'; require_once 'Facebook/FacebookAuthorizationException.php'; require_once 'Facebook/FacebookResponse.php'; require_once 'Facebook/HttpClients/FacebookCurl.php'; require_once 'Facebook/HttpClients/FacebookHttpable.php'; require_once 'Facebook/HttpClients/FacebookCurlHttpClient.php'; require_once 'Facebook/FacebookSDKException.php'; require_once 'Facebook/FacebookRequestException.php'; require_once 'Facebook/FacebookRedirectLoginHelper.php'; require_once 'Facebook/FacebookRequest.php'; require_once 'Facebook/GraphObject.php'; require_once 'Facebook/GraphUser.php'; $config = $this->getServiceLocator()->get('Config'); $appId = $config['login']['facebook']['appId']; $appSecret = $config['login']['facebook']['appSecret']; FacebookSession::setDefaultApplication($appId, $appSecret); $url = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://'; $url .= $_SERVER['HTTP_HOST'] . '/user/signin/facebook'; $facebook = new \Facebook\FacebookRedirectLoginHelper($url); try { $session = $facebook->getSessionFromRedirect(); } catch (\Facebook\FacebookRequestException $ex) { // When Facebook returns an error echo $ex->getMessage(); } catch (\Exception $ex) { // When validation fails or other local issues echo $ex->getMessage(); } if (isset($session)) { $user_profile = (new \Facebook\FacebookRequest($session, 'GET', '/me'))->execute()->getGraphObject(\Facebook\GraphUser::className()); $arrResponse = $user_profile->asArray(); $email = $user_profile->getProperty('email'); if (!$email) { echo '<script>window.opener.alert("Không tồn tại thông tin Email của tài khoản trên");window.close()</script>'; } $user = new User(); $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper'); $serviceUser = $this->getServiceLocator()->get('User\\Service\\User'); if (!$serviceUser->authenticateFacebook($email)) { $user->setActive('1'); $user->setEmail($email); $user->setRole(\User\Model\User::ROLE_MEMBER); $user->setFullName($arrResponse['name']); $user->setCreatedDate(DateBase::getCurrentDate()); $user->setCreatedDateTime(DateBase::getCurrentDateTime()); $userMapper->save($user); // check nếu user đó đã dc mời tham gia dự án sẽ gắn luôn nó với dự án $projectUser = new \Work\Model\ProjectUser(); $projectUser->setUserEmail($user->getEmail()); $projectUser->setUserId($user->getId()); $projectUserMapper = $this->getServiceLocator()->get('\\Work\\Model\\ProjectUserMapper'); $projectUserMapper->updateUserId($projectUser); $this->redirect()->toUrl($url); } else { // check nếu user đó đã dc mời tham gia dự án sẽ gắn luôn nó với dự án $projectUser = new \Work\Model\ProjectUser(); $projectUser->setUserEmail($serviceUser->getUser()->getEmail()); $projectUser->setUserId($serviceUser->getUser()->getId()); $projectUserMapper = $this->getServiceLocator()->get('\\Work\\Model\\ProjectUserMapper'); $projectUserMapper->updateUserId($projectUser); if (!$_SESSION['redirect']) { return $this->redirect()->toUrl('/'); } else { $redirect = $_SESSION['redirect']; unset($_SESSION['redirect']); return $this->redirect()->toUrl($redirect); } } } else { $this->redirect()->toUrl($facebook->getLoginUrl(['email', 'user_birthday', 'user_about_me'])); } return $response; }