예제 #1
0
 /**
  * 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);
 }
예제 #2
0
 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;
     }
 }