コード例 #1
0
ファイル: SDK.php プロジェクト: ravikathaitarm01/fluenz1
 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;
     }
 }
コード例 #2
0
ファイル: fb_handlers.php プロジェクト: monat78/fbwlan
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!')));
    }
}
コード例 #3
0
 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();
     }
 }
コード例 #4
0
 /**
  * @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');
 }
コード例 #5
0
 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);
 }
コード例 #6
0
 /**
  * @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']);
     }
 }
コード例 #7
0
 /**
  * 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;
     }
 }
コード例 #8
0
ファイル: Facebook.php プロジェクト: nobox/identichip
 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;
     }
 }
コード例 #9
0
ファイル: HomeController.php プロジェクト: CoffeeOwl17/HEXA
 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;
 }
コード例 #10
0
ファイル: FacebookAPI.php プロジェクト: kylewm/KnownFacebook
 /**
  * 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;
     }
 }
コード例 #11
0
ファイル: lib_login.php プロジェクト: ponchov/quizzworld
 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;
 }
コード例 #12
0
ファイル: Phacebook.php プロジェクト: zolli/phacebook
 /**
  * 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());
     }
 }
コード例 #13
0
ファイル: facebook.inc.php プロジェクト: KRCM13/chamilo-lms
/**
 * 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
    }
}
コード例 #14
0
 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');
 }
コード例 #15
0
ファイル: ConfigController.php プロジェクト: jsehersan/social
 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'));
 }
コード例 #16
0
ファイル: WebApp.php プロジェクト: Geekathon/Selective-Tweets
 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();
     }
 }
コード例 #17
0
 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 = '';
     }
 }
コード例 #18
0
 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();
     }
 }
コード例 #19
0
 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);
     }
 }
コード例 #20
0
ファイル: FacebookLogin.php プロジェクト: C4AProjects/c4apage
 /**
  * {@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;
 }
コード例 #21
0
ファイル: socials_class.php プロジェクト: kerranswell/spost
 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;
     }
 }
コード例 #22
0
 /**
  * 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;
 }
コード例 #23
0
ファイル: Facebook.php プロジェクト: dmelo/dzend
 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}");
     }
 }
コード例 #24
0
ファイル: FacebookUtil.php プロジェクト: sks40gb/jnv
 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;
     }
 }
コード例 #25
0
 /**
  * @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);
     }
 }
コード例 #26
0
 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;
 }
コード例 #27
0
ファイル: AuthController.php プロジェクト: zfury/cmf
 /**
  * @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');
     }
 }
コード例 #28
0
ファイル: likes.php プロジェクト: vaibhav734/Facebook-Album
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');
コード例 #29
0
 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);
     }
 }
コード例 #30
0
 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) {}
     }
 }