/** * Facebook Login */ public function fblogin() { $this->autoRender = false; if (session_status() == PHP_SESSION_NONE) { session_start(); } FacebookSession::setDefaultApplication(FACEBOOK_APP_ID, FACEBOOK_APP_SECRET); $helper = new FacebookRedirectLoginHelper(FACEBOOK_REDIRECT_URI); $url = $helper->getLoginUrl(array('email')); $this->redirect($url); }
protected function action() { //Init app with app id and secret FacebookSession::setDefaultApplication('416201525206070', 'db946f783550299dcf77faf9f09a8f41'); //Login helper with redirect_uri $helper = new FacebookRedirectLoginHelper('http://www.ituk.it/cinderella/fblogin'); try { $session = $helper->getSessionFromRedirect(); } catch (FacebookRequestException $ex) { //Facebook returns an error Session::setObj(Session::SYSMSG, 'Errore durante l\'autenticazione con Facebook, per favore riprovare più tardi.'); $this->redirect = 'message'; exit; } catch (Exception $ex) { //Validation fails or other local issues Session::setObj(Session::SYSMSG, 'Errore durante l\'autenticazione con Facebook, per favore riprovare più tardi.'); $this->redirect = 'message'; exit; } //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(); $fbid = $graphObject->getProperty('id'); // To Get Facebook ID $fbfullname = $graphObject->getProperty('name'); // To Get Facebook full name $fbfirstname = $graphObject->getProperty('first_name'); // To Get Facebook first name $fblastname = $graphObject->getProperty('last_name'); // To Get Facebook last name $fbemail = $graphObject->getProperty('email'); // To Get Facebook email ID //Check if already logged in with Facebook //Create new Facebook user $fb_user = new UtenteFb($fbid); if (!$fb_user->hereIam()) { //Save credentials as regular user $objDateTime = new DateTime('NOW'); $fakepassw = md5($objDateTime->format('c')); $fakeemail = $fakepassw . '@facebook.com'; $fb_user->setNome($fbfirstname); $fb_user->setCognome($fblastname); $fb_user->setEmail(isset($fbemail) && strlen($fbemail) > 0 ? $fbemail : $fakeemail); $fb_user->setUsername('FacebookUser'); $fb_user->set_password($fakepassw); $fb_user->save(); //Save as Facebook user $fb_user->setFbId($fbid); $fb_user->setAvatarUrl($fb_user->getAvatarUrl()); //Save Facebook credentials $fb_user->saveAsFbUser(); } //Login user Session::setObj(Session::UTENTE, $fb_user); Session::setObj(Session::SYSMSG, 'Benvenuto ' . $fb_user->getNome() . ' ' . $fb_user->getCognome()); $this->redirect = 'message'; } else { //Try Facebook Authentication $loginUrl = $helper->getLoginUrl(); $this->redirect = $loginUrl; } }