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; } }
function handle_fb_callback() { render_boilerplate(); $helper = new FacebookRedirectLoginHelper(MY_URL . 'fb_callback/'); try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { // When Facebook returns an error Flight::error($ex); } catch (\Exception $ex) { // When validation fails or other local issues Flight: error($ex); } if ($session) { $_SESSION['FBTOKEN'] = $session->getToken(); if (check_permissions($session)) { $_SESSION['FB_CHECKIN_NONCE'] = make_nonce(); Flight::render('fb_callback', array('post_action' => MY_URL . 'checkin', 'place_name' => PAGE_NAME, 'nonce' => $_SESSION['FB_CHECKIN_NONCE'])); } else { if (ARRAY_KEY_EXISTS('FB_REREQUEST', $_SESSION) && $_SESSION['FB_REREQUEST']) { Flight::render('denied_fb', array('msg' => _('You didn\'t grant us permission to post on Facebook. That\'s ok!'))); } else { $_SESSION['FB_REREQUEST'] = True; Flight::redirect(MY_URL . 'rerequest_permission'); } } } else { Flight::render('denied_fb', array('msg' => _('It looks like you didn\'t login! That\'s ok!'))); } }
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); }
/** * @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']); } }
/** * 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; } }
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; }
/** * Handles the Facebook callback request */ public function handleCallback() { try { $this->facebookSession = $this->loginHelper->getSessionFromRedirect(); Session::put('fb_token', $this->facebookSession->getToken()); return TRUE; } catch (FacebookRequestException $e) { throw new PhacebookException($e->getMessage()); } }
/** * This function connect to facebook and retrieves the user info * If user does not exist in chamilo, it creates it and logs in * If user already exists, it updates his info */ function facebookConnect() { global $facebook_config; global $helper; try { $helper = new FacebookRedirectLoginHelper($facebook_config['return_url']); $session = $helper->getSessionFromRedirect(); // see if we have a session if (isset($session)) { // graph api request for user data $request = new FacebookRequest($session, 'GET', '/me'); $response = $request->execute(); // get response $graphObject = $response->getGraphObject(); $username = changeToValidChamiloLogin($graphObject->getProperty('email')); $email = $graphObject->getProperty('email'); $locale = $graphObject->getProperty('locale'); $language = facebookPluginGetLanguage($locale); if (!$language) { $language = 'en_US'; } //Checks if user already exists in chamilo $u = array('firstname' => $graphObject->getProperty('first_name'), 'lastname' => $graphObject->getProperty('last_name'), 'status' => STUDENT, 'email' => $graphObject->getProperty('email'), 'username' => $username, 'language' => $language, 'password' => 'facebook', 'auth_source' => 'facebook', 'extra' => array()); $chamiloUinfo = api_get_user_info_from_email($email); if ($chamiloUinfo === false) { // we have to create the user $chamilo_uid = external_add_user($u); if ($chamilo_uid !== false) { $_user['user_id'] = $chamilo_uid; $_user['uidReset'] = true; $_SESSION['_user'] = $_user; header('Location:' . api_get_path(WEB_PATH)); exit; } else { return false; } } else { // User already exists, update info and login $chamilo_uid = $chamiloUinfo['user_id']; $u['user_id'] = $chamilo_uid; external_update_user($u); $_user['user_id'] = $chamilo_uid; $_user['uidReset'] = true; $_SESSION['_user'] = $_user; header('Location:' . api_get_path(WEB_PATH)); exit; } } } catch (FacebookRequestException $ex) { echo $ex; } catch (Exception $ex) { // When validation fails or other local issues } }
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 getConfigChannel($id) { session_start(); $ch = Helper::getChannel($id); // FACEBOOK if ($ch->type == 'f') { if (!$ch) { return "Canal no encontrado"; } if (Input::get('code')) { FacebookSession::setDefaultApplication($ch->getParam('APP_ID'), $ch->getParam('APP_SECRET')); $helper = new FacebookRedirectLoginHelper(URL::to('social/config/channel/' . $id)); $session = $helper->getSessionFromRedirect(); if ($session->validate()) { $request = new FacebookRequest($session, 'GET', '/me/accounts?fields=name,access_token,perms'); $pageList = $request->execute()->getGraphObject()->asArray(); if ($ch->getParam('PAGE_ID')) { //Comprobamos que la pagina que hemos introducido esta entre las que administra el usuario $page = Facebook::checkIdPage($ch->getParam('PAGE_ID'), $pageList['data']); if ($page) { $ch->setParam('TOKEN', $page->access_token); $ch->setParam('PAGE_NAME', $page->name); return Redirect::to('social/config/channel/' . $id)->with('message', 'Canal configurado con exito , Página ' . $page->name); } } return Redirect::to('social/config/channel/' . $id)->with('error', 'Debe introducir el id de la pagina con la cuel quiere publicar'); } } if ($ch->getParam('TOKEN')) { // $ch->getTokenInfo(); } } // !! // TWITTER if ($ch->type == 't') { // try{ // // // $res = file_get_contents('http://tinyurl.com/api-create.php?url=http://stackoverflow.com/questions/22355828/doing-http-requests-from-laravel-to-an-external-api'); // //$uploaded_media = Social::Twitter()->uploadMedia(['media' => File::get(public_path('front/images/vilca_logo4.png'))]); // //$res=Social::Twitter()->postTweet(['status' => ' defg ,jh efg ,jh defg ,jh defg defg ,jh defg ,jh defg ,j fin '.$res, 'media_ids' => $uploaded_media->media_id_string]);; // // var_dump( Social::Twitter()->getUserTimeline(['screen_name' => 'thujohn', 'count' => 1, 'format' => 'json']) // ); // }catch (\Exception $e){ // // return Redirect::back()->with('error',$e->getMessage()); // } // $cfg_tw=Config::get('social.twitter'); } $tmp = array('extends' => Config::get('social::social.tmp.admin', 'layout.base'), 'section_main' => Config::get('social::social.tmp.section_main', 'main')); $header_title = array('clase' => 'fa fa-share-alt', 'titulo' => 'Social <small>Config::' . $ch->description . '</small>'); return View::make('social::configChannel', compact('ch', 'tmp', 'header_title')); }
protected function initFacebookSession() { // first try from redirect try { $helper = new FacebookRedirectLoginHelper(ROOT_URL); $this->fb = $helper->getSessionFromRedirect(); } catch (\Exception $ex) { // When validation fails or other local issues } if (!$this->fb) { // next try from canvas try { $helper = new FacebookCanvasLoginHelper(); $this->fb = $helper->getSession(); } catch (\Exception $ex) { // When validation fails or other local issues } } if (!$this->fb) { // next try from JS try { $helper = new FacebookJavaScriptLoginHelper(); $this->fb = $helper->getSession(); } catch (\Exception $ex) { // When validation fails or other local issues } } // finally fall back to an existing session, if we have one if (!$this->fb && !empty($_SESSION['fb_token'])) { try { $this->fb = new FacebookSession($_SESSION['fb_token']); $this->fb->validate(); } catch (\Exception $ex) { // When validation fails or other local issues } } if ($this->fb) { // Logged in try { $_SESSION['fb_token'] = $this->fb->getToken(); $user_profile = (new FacebookRequest($this->fb, 'GET', '/me'))->execute()->getGraphObject(GraphUser::className()); $this->fb_uid = $user_profile->getId(); } catch (\Exception $e) { $this->fb = null; } } if (!$this->fb) { session_destroy(); } }
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 = ''; } }
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; }
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; } }
/** * Attempt get a facebook session from a redirect * It should be called after a redirect in to facebook.com * @return boolean */ public function canGetASession() { try { $session = $this->loginHelper->getSessionFromRedirect(); $this->fbsession = $session; } catch (FacebookRequestException $ex) { // When Facebook returns an error $this->error = $ex->getMessage(); return false; } catch (\Exception $ex) { // When validation fails or other local issues $this->error = $ex->getMessage(); return false; } //Only get here case the loginHelper return NULL if (empty($this->fbsession)) { $this->error = "An error has ocurred on attempt sing in on the facebook.com, try again later"; return false; } $this->session->setData("_facebookSessionCode", filter_input(INPUT_GET, "code")); //$_SESSION['_userid'] = $id; //$_SESSION['_groups'] = $groups; return true; }
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; } }
/** * @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 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; }
/** * @return \Zend\Http\Response * @throws \Facebook\FacebookRequestException */ public function facebookCallbackAction() { $config = $this->getServiceLocator()->get('config')['facebook']; $config['callbackUrl'] = $this->url()->fromRoute('user/default', ['controller' => 'auth', 'action' => 'facebook-callback'], ['force_canonical' => true]); FacebookSession::setDefaultApplication($config['appId'], $config['appSecret']); $helper = new FacebookRedirectLoginHelper($config['callbackUrl']); try { $session = $helper->getSessionFromRedirect(); } catch (\Exception $ex) { $this->flashMessenger()->addErrorMessage("Invalid callback request. Oops. Sorry."); return $this->redirect()->toRoute('home'); } if ($session) { // Logged in $request = new FacebookRequest($session, 'GET', '/me'); $response = $request->execute(); $graphObject = $response->getGraphObject(); /** * @var \Doctrine\ORM\EntityManager $objectManager */ $objectManager = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); /** * @var \User\Entity\Auth $auth */ $auth = $objectManager->getRepository('User\\Entity\\Auth')->getAuthRow(Auth::PROVIDER_FACEBOOK, $graphObject->getProperty('id')); if ($auth) { $user = $auth->getUser(); if (!$user->isActive()) { $this->flashMessenger()->addSuccessMessage("'User is not active'"); return $this->redirect()->toRoute('home'); } $auth->setToken($session->getAccessToken()); $auth->setTokenSecret(0); $auth->setTokenType(Auth::TYPE_ACCESS); $message = "You've successfully logged in via facebook"; } else { if (!$this->identity()) { //create new user $user = new \User\Entity\User(); $displayName = $graphObject->getProperty('first_name') . ' ' . $graphObject->getProperty('last_name'); $user->setDisplayName($displayName); $user->setRole($user::ROLE_USER); $user->activate(); $objectManager->persist($user); $objectManager->flush(); } else { //get current authorized user $user = $this->identity()->getUser(); } $auth = new \User\Entity\Auth(); $auth->setToken($session->getAccessToken()); $auth->setTokenSecret(0); $auth->setForeignKey($graphObject->getProperty('id')); $auth->setProvider(Auth::PROVIDER_FACEBOOK); $auth->setTokenType(Auth::TYPE_ACCESS); $auth->setUserId($user->getId()); $user->getAuths()->add($auth); $auth->setUser($user); $message = "You've successfully registered via facebook"; } $objectManager->persist($user); $objectManager->persist($auth); $objectManager->flush(); $auth->login($this->getServiceLocator()); $this->flashMessenger()->addSuccessMessage($message); $session = new Container('location'); $location = $session->location; if ($location) { $session->getManager()->getStorage()->clear('location'); return $this->redirect()->toUrl($location); } return $this->redirect()->toRoute('home'); } }
if (isset($_SESSION) && isset($_SESSION['fb_token'])) { // create new session from saved access_token $session = new FacebookSession($_SESSION['fb_token']); try { facebook::$CURL_OPTS[CURLOPT_CAINFO] = 'libs/Facebook/HttpClients/fb_ca_chain_bundle.crt'; if (!$session->validate()) { $session = null; } } catch (Exception $e) { // catch any exceptions $session = null; } } if (!isset($session) || $session === null) { try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { print_r($ex); } catch (Exception $ex) { print_r($ex); } } echo "<title>FBApp-Details</title>"; /** * Code to get the public details of user */ if (isset($session) && $session != NULL) { try { $_SESSION['fb_token'] = $session->getToken(); //get user details id name and email $user_profile = new FacebookRequest($session, 'GET', '/me?fields=id,name,email');
public function facebook_login() { $fbAppID = Configure::read('System.Facebook.AppID'); $fbSecret = Configure::read('System.Facebook.AppSecret'); FacebookSession::setDefaultApplication($fbAppID, $fbSecret); $redirectUrl = Router::url(['plugin' => 'Social', 'controller' => 'users', 'action' => 'facebook_login'], true); $helper = new FacebookRedirectLoginHelper($redirectUrl); try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { die('Error get FB session'); } catch (\Exception $ex) { die('Error get FB session'); } if ($session) { try { $user = new FacebookRequest($session, 'GET', '/me'); $user = $user->execute(); $user = $user->getGraphObject(GraphUser::className()); } catch (FacebookRequestException $e) { echo "Exception occured, code: " . $e->getCode(); echo " with message: " . $e->getMessage(); } } if (isset($user) && $user) { $fbid = $user->getProperty("id"); $email = $user->getProperty("email"); $firstName = $user->getProperty("first_name"); $lastName = $user->getProperty("last_name"); $user = $this->Users->find()->where(['facebook_id' => $fbid, 'status <>' => USER_STATUS_DELETED])->first(); if ($user) { // Has already login fb before => Allow to login $this->request->session()->write('Core.Users', $user); $this->redirect(['plugin' => 'admin', 'controller' => 'pages', 'action' => 'index']); } else { // Check email exist or not $user = $this->Users->find()->where(['email' => $email, 'status <>' => USER_STATUS_DELETED])->first(); if ($user) { //Exist Real account => not allow to login using facebook $this->Flash->success(__('this email exist in the system and cannot be using facebook')); $this->redirect($this->referer()); } else { $userEntity = $this->Users->newEntity(); $userEntity->email = $email; $userEntity->facebook_id = $fbid; $userEntity->first_name = $firstName; $userEntity->last_name = $lastName; $userEntity->auth_token = \Core::randomCode(); $userEntity->status = USER_STATUS_ACTIVE; if ($this->Users->save($userEntity)) { $this->request->session()->write('Core.Users', $userEntity); $this->redirect($this->referer()); } else { $this->Flash->warning(__('cannot create member account')); $this->redirect($this->referer()); } } } } else { $scope = ['email', 'public_profile']; $loginUrl = $helper->getLoginUrl($scope); $this->redirect($loginUrl); } }
public static function getUser($register_url) { try { self::setDefaultApplication(); if (empty($register_url)) { return false; } $helper = new FacebookRedirectLoginHelper($register_url); $session = $helper->getSessionFromRedirect(); if (!empty($session)) { $request = new FacebookRequest($session, 'GET', '/me'); $response = $request->execute(); $graphObject = $response->getGraphObject(); $fb_user = $response->getGraphObject(GraphUser::className()); if (empty($fb_user)) { throw new Exception(Lang::_('Unable to retrieve your Facebook account')); } $user = (object) null; $user->fb_id = $fb_user->getProperty('id'); $user->firstname = $fb_user->getProperty('first_name'); $user->lastname = $fb_user->getProperty('last_name'); $user->email = $fb_user->getProperty('email'); if (empty($user->email)) { throw new Exception(Lang::_('Your email address seems to be awaiting for validation, you must confirm your Facebook account before continue')); } return $user; } return false; } catch (Exception $e) { throw new Exception(Lang::_('An error occured during the link of your Facebook account') . '<br>' . $e->getMessage()); // When Facebook throw an error //if ($e instanceOf FacebookRequestException) {} } }