示例#1
0
 public function facebook_verify_access_key($user)
 {
     $result = array('has_valid_access_token' => false);
     $fb = new \Facebook\Facebook(['app_id' => FB_APP_ID, 'app_secret' => FB_SECRET_KEY]);
     $CI =& get_instance();
     $CI->load->model('user_account_model');
     $facebook_accounts = $CI->user_account_model->get(array('user_id' => $user->id, 'type' => 'facebook'));
     $result['accounts'] = array();
     if (sizeof($facebook_accounts) > 0) {
         foreach ($facebook_accounts as $account) {
             if ($account->access_token) {
                 $oAuth2Client = $fb->getOAuth2Client();
                 $tokenMetadata = $oAuth2Client->debugToken($account->access_token);
                 $accessToken = new Facebook\Authentication\AccessToken($account->access_token, strtotime($tokenMetadata->getExpiresAt()->format('M d, Y')));
                 if ($accessToken->isExpired()) {
                     $a['expired_access_token'] = true;
                 } else {
                     $a['expired_access_token'] = false;
                     $a['valid_access_token'] = true;
                     $a['expires_at'] = $tokenMetadata->getExpiresAt()->format('M d, Y');
                     $a['user'] = $this->facebook_get_user($account->access_token);
                     $a['id'] = $account->id;
                     $result['has_valid_access_token'] = true;
                 }
                 $result['accounts'][] = $a;
             }
         }
     }
     $helper = $fb->getRedirectLoginHelper();
     // We only ask authentication for the Publish action, w/c allows us to post in the user's feed.
     $permissions = ['publish_actions'];
     $loginUrl = $helper->getLoginUrl(base_url() . "facebook/login_callback", $permissions);
     $result['login_url'] = $loginUrl;
     return $result;
 }
示例#2
0
 /**
  * @Method({"POST"})
  * @Route("/facebook/login", name="facebook_login")
  */
 public function facebookLoginAction(Request $request)
 {
     $code = $request->get('code');
     $fb = new \Facebook\Facebook(['app_id' => '529276757135612', 'app_secret' => '0fe34b757c10440e7259665a53dda55a', 'default_graph_version' => 'v2.5']);
     try {
         $accessToken = $fb->getOAuth2Client()->getAccessTokenFromCode($code, 'http://api.viettut.com/');
         $response = $fb->get('/me?fields=id,name,email', $accessToken->getValue());
         $user = $response->getGraphUser();
         $userManager = $this->container->get('viettut_user.domain_manager.lecturer');
         $lecturer = $userManager->findUserByUsernameOrEmail($user['email']);
         if ($lecturer instanceof UserInterface) {
             $lecturer->setFacebookId($user['id'])->setName($user['name']);
         } else {
             $userDiscriminator = $this->get('rollerworks_multi_user.user_discriminator');
             $userDiscriminator->setCurrentUser('viettut_user_system_lecturer');
             $lecturer = $userManager->createNew();
             $lecturer->setEnabled(true)->setFacebookId($user['id'])->setPlainPassword($user['email'])->setUsername($user['email'])->setEmail($user['email'])->setName($user['name'])->setActive(true)->setAvatar(sprintf('https://graph.facebook.com/%s/picture?type=square', $user['id']));
             $userManager->save($lecturer);
         }
         $jwtManager = $this->get('lexik_jwt_authentication.jwt_manager');
         $jwtTransformer = $this->get('viettut_api.service.jwt_response_transformer');
         $tokenString = $jwtManager->create($lecturer);
         return JsonResponse::create($jwtTransformer->transform(['token' => $tokenString], $lecturer), 200);
     } catch (\Facebook\Exceptions\FacebookResponseException $e) {
         throw new UnauthorizedHttpException('Can not login with that account');
     } catch (\Facebook\Exceptions\FacebookSDKException $e) {
         throw new UnauthorizedHttpException('Can not login with that account');
     }
 }
示例#3
0
 public function getFacebookUserObject()
 {
     require_once APPPATH . "../assets/front/social/facebook/autoload.php";
     $output_status = 'success';
     $access_token_value = NULL;
     // Create our Application instance (replace this with your appId and secret).
     $fb = new Facebook\Facebook(['app_id' => FACEBOOK_APP_ID, 'app_secret' => FACEBOOK_SECRET_ID, 'default_graph_version' => 'v2.5']);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
         // Returns a `Facebook\FacebookResponse` object
         $response = $fb->get('/me?fields=id,name,email', $accessToken);
         $output_message = $user = $response->getGraphUser();
         // The OAuth 2.0 client handler helps us manage access tokens
         $oAuth2Client = $fb->getOAuth2Client();
         $access_token_value = (string) $oAuth2Client->getLongLivedAccessToken($accessToken)->getValue();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         //            echo 'Graph returned an error: ' . $e->getMessage();
         $output_message = $e->getMessage();
         $output_status = 'error';
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         //            echo 'Facebook SDK returned an error: ' . $e->getMessage();
         $output_message = $e->getMessage();
         $output_status = 'error';
     }
     return array('status' => $output_status, 'data' => $output_message, 'accessToken' => $access_token_value);
 }
示例#4
0
 function login_callback()
 {
     $fb = new \Facebook\Facebook(['app_id' => FB_APP_ID, 'app_secret' => FB_SECRET_KEY]);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $access_token = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         echo 'Graph return an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     if (!isset($access_token)) {
         if ($helper->getError()) {
             header('HTTP/1.0 401 Unauthorized');
             echo "Error: " . $helper->getError() . "\n";
             echo "Error Code: " . $helper->getErrorCode() . "\n";
             echo "Error Reason: " . $helper->getErrorReason() . "\n";
             echo "Error Description: " . $helper->getErrorDescription() . "\n";
         } else {
             header('HTTP/1.0 400 Bad Request');
             echo 'Bad request';
         }
         exit;
     }
     $oAuth2Client = $fb->getOAuth2Client();
     $tokenMetaData = $oAuth2Client->debugToken($access_token);
     $tokenMetaData->validateAppId(FB_APP_ID);
     $tokenMetaData->validateExpiration();
     if (!$access_token->isLongLived()) {
         try {
             $access_token = $oAuth2Client->getLongLivedAccessToken($access_token);
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             echo "<p>Error getting long-lived access token: " . $e->getMessage() . "</p>";
             exit;
         }
     }
     $facebook_access_token = (string) $access_token;
     $this->load->model('api_model');
     $facebook_user = $this->api_model->facebook_get_user($facebook_access_token);
     $user_account = array('user_id' => $this->user->id, 'account_id' => $facebook_user['id'], 'type' => 'facebook', 'access_token' => $facebook_access_token);
     $this->load->model('user_account_model');
     if ($this->user_account_model->save($user_account)) {
         $_SESSION['facebook_access_token'] = $facebook_access_token;
         $this->session->set_userdata('facebook_access_token', $facebook_access_token);
         redirect(base_url() . "main/myaccount/facebook");
     }
 }
示例#5
0
 public function data()
 {
     $config = new Controllers_Api_Facebook_Config_App();
     $fb = new Facebook\Facebook(['app_id' => $config->config['app_id'], 'app_secret' => $config->config['app_secret'], 'default_graph_version' => $config->config['default_graph_version']]);
     $helper = $fb->getRedirectLoginHelper();
     $result = array();
     try {
         $accessToken = $helper->getAccessToken();
         if (!isset($accessToken)) {
             if ($helper->getError()) {
                 $result = array('status' => false, 'error' => $helper->getError(), 'code' => $helper->getErrorCode(), 'reason' => $helper->getErrorReason(), 'description' => $helper->getErrorDescription());
             } else {
                 $result = array('status' => false, 'error' => 'Bad request');
             }
         } else {
             $oAuth2Client = $fb->getOAuth2Client();
             // Get the access token metadata from /debug_token
             $tokenMetadata = $oAuth2Client->debugToken($accessToken);
             $expired = $tokenMetadata->metadata['expires_at'];
             $issued = $tokenMetadata->metadata['issued_at'];
             $result['status'] = true;
             $result['data']['token'] = $tokenMetadata;
             //session 2
             try {
                 // Returns a `Facebook\FacebookResponse` object
                 $response = $fb->get('/me?fields=id,name,email', $accessToken->getValue());
                 $user = json_decode($response->getGraphUser());
                 $result['data']['user'] = $user;
             } catch (Facebook\Exceptions\FacebookResponseException $e) {
                 $result['data']['user'] = $e->getMessage();
             } catch (Facebook\Exceptions\FacebookSDKException $e) {
                 $result['data']['user'] = $e->getMessage();
             }
         }
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         $result = array('status' => false, 'error' => $e->getMessage());
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         $result = array('status' => false, 'error' => $e->getMessage());
     }
     $result['social'] = 'facebook';
     //$redirect_uri    = $this->input->get('redirect_uri');
     //if(isset($_GET['code'])){
     //    header("Location: ".$redirect_uri."?".http_build_query($result, '', '&'));
     // }else{
     echo json_encode($result);
     // }
 }
示例#6
0
 public function login()
 {
     $client = new Facebook\Facebook(['app_id' => '558049591013252', 'app_secret' => '6678bbf4ef0bfad674601faee955a507', 'default_graph_version' => 'v2.5']);
     if (!isset($_GET['code'])) {
         $helper = $client->getRedirectLoginHelper();
         $permissions = ['email', 'user_likes', 'manage_pages', 'publish_pages', 'read_insights'];
         // optional
         $loginUrl = $helper->getLoginUrl(base_url() . 'index.php/facebook/login', $permissions);
         $data['redirect_uri'] = $loginUrl;
         $this->load->view('youtube/oauth', $data);
     } else {
         $helper = $client->getRedirectLoginHelper();
         try {
             $fb_access_token = $helper->getAccessToken();
         } catch (Facebook\Exceptions\FacebookResponseException $e) {
             // When Graph returns an error
             echo 'Graph returned an error: ' . $e->getMessage();
             exit;
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             // When validation fails or other local issues
             echo 'Facebook SDK returned an error: ' . $e->getMessage();
             exit;
         }
         if (isset($fb_access_token)) {
             // Logged in!
             // Now you can redirect to another page and use the
             // access token from $_SESSION['facebook_access_token']
             // OAuth 2.0 client handler
             $oAuth2Client = $client->getOAuth2Client();
             // Exchanges a short-lived access token for a long-lived one
             $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($fb_access_token);
             $client->setDefaultAccessToken($longLivedAccessToken);
             $data['redirect_uri'] = base_url() . 'index.php/facebook/analytics';
             $_SESSION['fb_access_token'] = (string) $longLivedAccessToken;
             $_SESSION['fb_client'] = $client;
             echo "token found";
         }
     }
     $this->load->view('youtube/oauth', $data);
 }
示例#7
0
 public function call_back()
 {
     $config = new Controllers_Api_Facebook_Config_App();
     $fb = new Facebook\Facebook(['app_id' => $config->config['app_id'], 'app_secret' => $config->config['app_secret'], 'default_graph_version' => $config->config['default_graph_version']]);
     $helper = $fb->getRedirectLoginHelper();
     $result = array();
     try {
         $accessToken = $helper->getAccessToken();
         if (!isset($accessToken)) {
             if ($helper->getError()) {
                 $result = array('status' => false, 'data' => array('error' => $helper->getError(), 'code' => $helper->getErrorCode(), 'reason' => $helper->getErrorReason(), 'description' => $helper->getErrorDescription()));
             } else {
                 $result = array('status' => false, 'data' => array('error' => 'Bad request'));
             }
         } else {
             $oAuth2Client = $fb->getOAuth2Client();
             // Get the access token metadata from /debug_token
             $tokenMetadata = $oAuth2Client->debugToken($accessToken);
             $result = array('status' => true, 'data' => array('token' => $accessToken->getValue(), 'meta' => json_decode($tokenMetadata)));
             //session 2
             try {
                 // Returns a `Facebook\FacebookResponse` object
                 $response = $fb->get('/me?fields=id,name', $accessToken->getValue());
                 $user = $response->getGraphUser();
                 $result = array_merge($result, array('detail' => $user['id']));
             } catch (Facebook\Exceptions\FacebookResponseException $e) {
                 $result = array_merge($result, array('detail' => $e->getMessage()));
             } catch (Facebook\Exceptions\FacebookSDKException $e) {
                 $result = array_merge($result, array('detail' => $e->getMessage()));
             }
         }
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         $result = array('status' => false, 'data' => array('error' => $e->getMessage()));
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         $result = array('status' => false, 'data' => array('error' => $e->getMessage()));
     }
     echo json_encode($result);
 }
示例#8
0
 public function init_config()
 {
     $accessToken = $_SESSION['fb_access_token'];
     $config = array('app_id' => '1669303983347467', 'app_secret' => 'f619732cca08aabeaf23ff8d12bf32b3', 'default_graph_version' => 'v2.5');
     $fb = new Facebook\Facebook($config);
     // OAuth 2.0 client handler
     $oAuth2Client = $fb->getOAuth2Client();
     // Exchanges a short-lived access token for a long-lived one
     $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
     return array("config" => $config, "accessToken" => $longLivedAccessToken);
 }
 /**
  * Tính năng đăng nhập qua facebook
  * Gọi sang API xác nhận truy cập facebook
  * Nếu đã có tài khoản này rồi thì login
  * Nếu chưa có thì tạo tài khoản cho KH. Để mật khẩu bằng trống
  * Đến lúc kiểm
  */
 public function login_facebook()
 {
     if (!session_id()) {
         session_start();
     }
     $this->autoLayout = false;
     $this->autoRender = false;
     $fb = new Facebook\Facebook(['app_id' => FB_APP_ID, 'app_secret' => FB_APP_SECRET, 'default_graph_version' => 'v2.2']);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         /* echo 'Graph returned an error: ' . $e->getMessage();
            exit;*/
         //get login url, if login error: retry login via login url
         $permissions = ['email', 'public_profile'];
         // Optional permissions
         $loginUrl = $helper->getLoginUrl(DOMAIN . Router::url(array('controller' => 'User', 'action' => 'login_facebook')), $permissions);
         $login_href = htmlspecialchars($loginUrl);
         $this->redirect($login_href);
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         /*echo 'Facebook SDK returned an error: ' . $e->getMessage();
           exit;*/
         //get login url, if login error: retry login via login url
         $permissions = ['email', 'public_profile'];
         // Optional permissions
         $loginUrl = $helper->getLoginUrl(DOMAIN . Router::url(array('controller' => 'User', 'action' => 'login_facebook')), $permissions);
         $login_href = htmlspecialchars($loginUrl);
         $this->redirect($login_href);
     }
     if (!isset($accessToken)) {
         $permissions = ['email', 'public_profile'];
         // Optional permissions
         $loginUrl = $helper->getLoginUrl(DOMAIN . Router::url(array('controller' => 'User', 'action' => 'login_facebook')), $permissions);
         $login_href = htmlspecialchars($loginUrl);
         $this->redirect($login_href);
         /*if ($helper->getError()) {
               header('HTTP/1.0 401 Unauthorized');
               echo "Error: " . $helper->getError() . "\n";
               echo "Error Code: " . $helper->getErrorCode() . "\n";
               echo "Error Reason: " . $helper->getErrorReason() . "\n";
               echo "Error Description: " . $helper->getErrorDescription() . "\n";
           } else {
               header('HTTP/1.0 400 Bad Request');
               echo 'Bad request';
           }
           exit;*/
     }
     // Logged in
     //echo '<h3>Access Token</h3>';
     //var_dump($accessToken->getValue());
     // The OAuth 2.0 client handler helps us manage access tokens
     $oAuth2Client = $fb->getOAuth2Client();
     // Get the access token metadata from /debug_token
     $tokenMetadata = $oAuth2Client->debugToken($accessToken);
     //echo '<h3>Metadata</h3>';
     //var_dump($tokenMetadata);
     // Validation (these will throw FacebookSDKException's when they fail)
     $tokenMetadata->validateAppId(FB_APP_ID);
     // If you know the user ID this access token belongs to, you can validate it here
     //$tokenMetadata->validateUserId('123');
     $tokenMetadata->validateExpiration();
     $response = $fb->get('/me?fields=id,name,email, gender', $accessToken->getValue());
     $user_fb = $response->getGraphUser();
     /**
      * check xem user da ton tai chua
      * Neu chua ton tai thi tao tai khoan cho user
      * con neu ton tai roi thi login vao cho user va redirect sang trang chu
      */
     $check_user = $this->User->findByUsername($user_fb['id']);
     if (!empty($check_user)) {
         $this->Session->write('user', $check_user);
     } else {
         $user_insert = array('id' => false, 'username' => $user_fb['id'], 'password' => '123456', 'gender' => 0, 'active_key' => "", 'phone' => '123456', 'captcha' => '123456', 'email' => $user_fb['email'], 'fullname' => $user_fb['name'], 'avatar' => 'https://graph.facebook.com/' . $user_fb['id'] . '/picture?type=large', 'status' => 1);
         $this->User->save($user_insert);
         $user_insert_id = $this->User->getInsertID();
         $user_login = $this->User->findById($user_insert_id);
         $this->Session->write('user', $user_login);
     }
     $_SESSION['fb_access_token'] = (string) $accessToken;
     $this->redirect(DOMAIN);
 }
 public function doFacebookLogin()
 {
     //$fb=Facebook::getFb();
     $fb = new Facebook\Facebook(['app_id' => '1659779297592952', 'app_secret' => '12f070df1d8ba88fded6413b8b7d0b3d', 'default_graph_version' => 'v2.2']);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     if (!isset($accessToken)) {
         if ($helper->getError()) {
             header('HTTP/1.0 401 Unauthorized');
             echo "Error: " . $helper->getError() . "\n";
             echo "Error Code: " . $helper->getErrorCode() . "\n";
             echo "Error Reason: " . $helper->getErrorReason() . "\n";
             echo "Error Description: " . $helper->getErrorDescription() . "\n";
         } else {
             header('HTTP/1.0 400 Bad Request');
             echo 'Bad request';
         }
         exit;
     }
     // The OAuth 2.0 client handler helps us manage access tokens
     $oAuth2Client = $fb->getOAuth2Client();
     // Get the access token metadata from /debug_token
     $tokenMetadata = $oAuth2Client->debugToken($accessToken);
     // Validation (these will throw FacebookSDKException's when they fail)
     $tokenMetadata->validateAppId("1659779297592952");
     // If you know the user ID this access token belongs to, you can validate it here
     //$tokenMetadata->validateUserId('123');
     $tokenMetadata->validateExpiration();
     if (!$accessToken->isLongLived()) {
         // Exchanges a short-lived access token for a long-lived one
         try {
             $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
             exit;
         }
     }
     if ($accessToken != null) {
         $user_token = $accessToken->getValue();
         $_SESSION['fb_access_token'] = (string) $accessToken;
         if ($this->_shareWithFacebook($fb, $user_token)) {
             $this->_callUpdateOffers();
             try {
                 // Returns a `Facebook\FacebookResponse` object
                 $response = $fb->get('/me?fields=id,name,email', $accessToken);
             } catch (Facebook\Exceptions\FacebookResponseException $e) {
                 echo 'Graph returned an error: ' . $e->getMessage();
                 exit;
             } catch (Facebook\Exceptions\FacebookSDKException $e) {
                 echo 'Facebook SDK returned an error: ' . $e->getMessage();
                 exit;
             }
             $user = $response->getGraphUser();
             if ($this->Mdl_social_accounts->getId() != '') {
                 $this->Mdl_social_accounts->setData('update_facebook', $user, 'facebook');
                 if ($this->Mdl_social_accounts->update()) {
                     setInformUser('success', 'Link Post succdessfully and your facebook details is saved successfully');
                     redirect('social_accounts');
                 } else {
                     setInformUser('error', 'Some error occurred');
                     redirect('social_accounts');
                 }
             } else {
                 $this->Mdl_social_accounts->setData('update_facebook', $user, 'facebook');
                 if ($this->Mdl_social_accounts->insert()) {
                     setInformUser('success', 'Link Post succdessfully and your facebook details is saved successfully');
                     redirect('social_accounts');
                 } else {
                     setInformUser('error', 'Some error occurred');
                     redirect('social_accounts');
                 }
             }
         }
     }
 }
示例#11
0
 public function fbCallbackAction()
 {
     $this->_helper->layout->disableLayout();
     $this->_helper->viewRenderer->setNoRender();
     $config = Zend_Registry::get('config');
     $fb = new Facebook\Facebook(['app_id' => $config->facebook->app_id, 'app_secret' => $config->facebook->app_secret, 'default_graph_version' => $config->facebook->default_graph_version]);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     if (!isset($accessToken)) {
         if ($helper->getError()) {
             header('HTTP/1.0 401 Unauthorized');
             echo "Error: " . $helper->getError() . "\n";
             echo "Error Code: " . $helper->getErrorCode() . "\n";
             echo "Error Reason: " . $helper->getErrorReason() . "\n";
             echo "Error Description: " . $helper->getErrorDescription() . "\n";
         } else {
             header('HTTP/1.0 400 Bad Request');
             echo 'Bad request';
         }
         exit;
     }
     // Logged in
     //echo '<h3>Access Token</h3>';
     //var_dump($accessToken->getValue());
     // The OAuth 2.0 client handler helps us manage access tokens
     $oAuth2Client = $fb->getOAuth2Client();
     // Get the access token metadata from /debug_token
     $tokenMetadata = $oAuth2Client->debugToken($accessToken);
     //echo '<h3>Metadata</h3>';
     //var_dump($tokenMetadata);
     // Validation (these will throw FacebookSDKException's when they fail)
     $tokenMetadata->validateAppId($config->facebook->app_id);
     // If you know the user ID this access token belongs to, you can validate it here
     //$tokenMetadata->validateUserId('123');
     $tokenMetadata->validateExpiration();
     if (!$accessToken->isLongLived()) {
         // Exchanges a short-lived access token for a long-lived one
         try {
             $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
             exit;
         }
         echo '<h3>Long-lived</h3>';
         var_dump($accessToken->getValue());
     }
     $_SESSION['fb_access_token'] = (string) $accessToken;
     try {
         // Returns a `Facebook\FacebookResponse` object
         //id,name,first_name,middle_name,last_name,name_format,birthday,age_range,email,gender,installed
         $response = $fb->get('/me?fields=id,name,email', $_SESSION['fb_access_token']);
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     $user = $response->getGraphUser();
     _print($user);
     exit;
     // User is logged in with a long-lived access token.
     // You can redirect them to a members-only page.
     //header('Location: https://example.com/members.php');
 }
require_once '../../core/global.php';
require_once PATH_SITE_ROOT . 'core/facebook-php-sdk-v4-5.0-dev/src/Facebook/autoload.php';
/*$SilentMode = false;
    if ((isset($_SESSION['fb_login_silent'])) && ($_SESSION['fb_login_silent'] == '1')) {
        $SilentMode = true;
    }*/
$facebook = new Facebook\Facebook(['app_id' => facebook_app_id, 'app_secret' => facebook_app_secret, 'default_graph_version' => facebook_graph_version]);
$helper = $facebook->getRedirectLoginHelper();
try {
    $accessToken = $helper->getAccessToken();
    if (!isset($accessToken)) {
        /*if ($helper->getError()) {
                header('HTTP/1.0 401 Unauthorized');
                echo "Error: " . $helper->getError() . "\n";
                echo "Error Code: " . $helper->getErrorCode() . "\n";
                echo "Error Reason: " . $helper->getErrorReason() . "\n";
                echo "Error Description: " . $helper->getErrorDescription() . "\n";
            } else {
                  header('HTTP/1.0 400 Bad Request');
                  echo 'Bad request';
            }
            exit;*/
        return AddAlertMessage('danger', 'Ошибка при регистрации! (1)', '/');
    }
    // Logged in
    //echo '<h3>Access Token</h3>';
    //var_dump($accessToken->getValue());
    // The OAuth 2.0 client handler helps us manage access tokens
    $oAuth2Client = $facebook->getOAuth2Client();
    // Get the access token metadata from /debug_token
    $tokenMetadata = $oAuth2Client->debugToken($accessToken);
示例#13
0
 public static function LoginFacebook()
 {
     $fb = new Facebook\Facebook(['app_id' => '1068588159868715', 'app_secret' => 'd3790d1f47df4805b47976f16199fd89', 'default_gra]ph_version' => 'v2.6']);
     $helper = $fb->getRedirectLoginHelper();
     $permissions = ['email'];
     // optional
     if (isset($_SESSION['facebook_access_token'])) {
         $accessToken = $_SESSION['facebook_access_token'];
     } else {
         $accessToken = $helper->getAccessToken();
     }
     if (isset($_SESSION['facebook_access_token'])) {
         $fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
     } else {
         // getting short-lived access token
         $_SESSION['facebook_access_token'] = (string) $accessToken;
         // OAuth 2.0 client handler
         $oAuth2Client = $fb->getOAuth2Client();
         // Exchanges a short-lived access token for a long-lived one
         $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
         $_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
         // setting default access token to be used in script
         $fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
     }
     $profile_request = $fb->get('/me?fields=name,first_name,last_name,email');
     $profile = $profile_request->getGraphNode()->asArray();
     return $profile;
 }
示例#14
0
 function after_login_handler()
 {
     $config_model = $this->add('xepan/marketing/SocialPosters_Facebook_FacebookConfig');
     $config_model->tryLoad($_GET['for_config_id']);
     if (!$config_model->loaded()) {
         $this->add('View_Error')->set('Could not load Config Model');
         return false;
     }
     $config = array('app_id' => $config_model['appId'], 'app_secret' => $config_model['secret'], 'fileUpload' => true, 'allowSignedRequest' => false);
     $this->fb = $facebook = $fb = new \Facebook\Facebook($config);
     if (!$this->fb) {
         return "Configuration Problem";
     }
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     if (isset($accessToken)) {
         // Logged in!
         $_SESSION['facebook_access_token'] = (string) $accessToken;
         $oAuth2Client = $fb->getOAuth2Client();
         // Exchanges a short-lived access token for a long-lived one
         $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
         $fb->setDefaultAccessToken($longLivedAccessToken);
         try {
             $response = $fb->get('/me');
             $userNode = $response->getGraphUser();
         } catch (Facebook\Exceptions\FacebookResponseException $e) {
             // When Graph returns an error
             echo 'Graph returned an error: ' . $e->getMessage();
             exit;
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             // When validation fails or other local issues
             echo 'Facebook SDK returned an error: ' . $e->getMessage();
             exit;
         }
         $fb_user = $this->add('xepan/marketing/SocialPosters_Facebook_FacebookUsers');
         $fb_user->addCondition('userid_returned', $userNode->getId());
         $fb_user->addCondition('config_id', $config_model->id);
         $fb_user->tryLoadAny();
         $fb_user['name'] = $userNode['name'];
         $fb_user['access_token'] = (string) $longLivedAccessToken;
         $fb_user['is_access_token_valid'] = true;
         $fb_user->save();
         return true;
     }
     return false;
 }
示例#15
0
 public function callbackAction()
 {
     $this->_helper->layout->disableLayout();
     $this->_helper->viewRenderer->setNoRender();
     $config = array('app_id' => '1553973548253647', 'app_secret' => 'b0ea352b328e6a61b2ec1f07672db859', 'default_graph_version' => 'v2.5', 'persistent_data_handler' => 'session');
     $fb = new Facebook\Facebook($config);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     if (!isset($accessToken)) {
         if ($helper->getError()) {
             header('HTTP/1.0 401 Unauthorized');
             echo "Error: " . $helper->getError() . "\n";
             echo "Error Code: " . $helper->getErrorCode() . "\n";
             echo "Error Reason: " . $helper->getErrorReason() . "\n";
             echo "Error Description: " . $helper->getErrorDescription() . "\n";
         } else {
             header('HTTP/1.0 400 Bad Request');
             echo 'Bad request';
         }
         exit;
     }
     // Logged in
     echo '<h3>Access Token</h3>';
     var_dump($accessToken->getValue());
     // The OAuth 2.0 client handler helps us manage access tokens
     $oAuth2Client = $fb->getOAuth2Client();
     // Get the access token metadata from /debug_token
     $tokenMetadata = $oAuth2Client->debugToken($accessToken);
     echo '<h3>Metadata</h3>';
     var_dump($tokenMetadata);
     // Validation (these will throw FacebookSDKException's when they fail)
     $tokenMetadata->validateAppId($config['app_id']);
     // Replace {app-id} with your app id
     // If you know the user ID this access token belongs to, you can validate it here
     //$tokenMetadata->validateUserId('123');
     $tokenMetadata->validateExpiration();
     if (!$accessToken->isLongLived()) {
         // Exchanges a short-lived access token for a long-lived one
         try {
             $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
             exit;
         }
         echo '<h3>Long-lived</h3>';
         var_dump($accessToken->getValue());
     }
     $this->user->accessToken = (string) $accessToken;
     $_SESSION['facebook_access_token'] = (string) $accessToken;
     //Store AccessToken in My_Auth::Storage (Session);
     $storage = My_Auth::getInstance('Painel')->getStorage();
     $storage->write($this->user);
     //        //PageTab
     //        $helper = $fb->getPageTabHelper();
     //
     //        try {
     //            $accessToken = $helper->getAccessToken();
     //        } catch (Facebook\Exceptions\FacebookResponseException $e) {
     //            // When Graph returns an error
     //            echo 'Graph returned an error: ' . $e->getMessage();
     //            exit;
     //        } catch (Facebook\Exceptions\FacebookSDKException $e) {
     //            // When validation fails or other local issues
     //            echo 'Facebook SDK returned an error: ' . $e->getMessage();
     //            exit;
     //        }
     //
     //        if (!isset($accessToken)) {
     //            echo 'No OAuth data could be obtained from the signed request. User has not authorized your app yet.';
     //            exit;
     //        }
     //
     //        // Logged in
     //        echo '<h3>Page ID</h3>';
     //        var_dump($helper->getPageId());
     //
     //        echo '<h3>User is admin of page</h3>';
     //        var_dump($helper->isAdmin());
     //
     //        echo '<h3>Signed Request</h3>';
     //        var_dump($helper->getSignedRequest());
     //
     //        echo '<h3>Access Token</h3>';
     //        var_dump($accessToken->getValue());
     echo '<a href="' . $this->_request->getBaseUrl() . '/painel/facebook">Go Back</a>';
 }
示例#16
0
 public function logincallback()
 {
     $fb = new Facebook\Facebook(['app_id' => '1509104876060790', 'app_secret' => '977e891176e8e1e9e6b626323f01d8bb', 'default_graph_version' => 'v2.5']);
     //$fbApp = new Facebook\FacebookApp('1509104876060790','977e891176e8e1e9e6b626323f01d8bb');
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error1 : ' . $e->getMessage();
         exit;
     }
     if (isset($accessToken)) {
         // Logged in!
         $_SESSION['facebook_access_token'] = (string) $accessToken;
         // Sets the default fallback access token so we don't have to pass it to each request
         $fb->setDefaultAccessToken($accessToken);
         // Now you can redirect to another page and use the
         // access token from $_SESSION['facebook_access_token']
         try {
             //Get pages
             $request = $fb->request('GET', '/me/accounts');
             $response = $fb->getClient()->sendRequest($request);
             $graphEdge = $response->getGraphEdge();
             // Iterate over all the GraphNode's returned from the edge
             $json = "";
             foreach ($graphEdge as $key => $value) {
                 $json .= $value['id'] . ":" . $value['name'] . ",";
             }
             //Get name and email
             $request = $fb->request('GET', '/me?fields=name,email');
             $response = $fb->getClient()->sendRequest($request);
             $graphNode = $response->getGraphNode();
             $name = $graphNode['name'];
             $id = $graphNode['id'];
             $email = isset($graphNode['email']) ? $graphNode['email'] : '';
             //Get long token
             // OAuth 2.0 client handler
             $oAuth2Client = $fb->getOAuth2Client();
             // Exchanges a short-lived access token for a long-lived one
             $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
             $loginData = array();
             $loginData['pages'] = $json;
             $loginData['name'] = $name;
             $loginData['email'] = $email;
             $loginData['id'] = $id;
             $loginData['facebook_token'] = $longLivedAccessToken;
             $loginData['login_provider'] = 'facebook';
             $this->save_and_login($loginData);
             //$this->index($loginData);
         } catch (Facebook\Exceptions\FacebookResponseException $e) {
             // When Graph returns an error
             echo 'Graph returned an error: ' . $e->getMessage();
             exit;
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             // When validation fails or other local issues
             echo 'Facebook SDK returned an error1 : ' . $e->getMessage();
             exit;
         }
         //echo 'Logged in as ' . $userNode->getName();
     }
 }
 public function facebook_login_callback()
 {
     global $rm_env_requirements;
     if (!($rm_env_requirements & RM_REQ_EXT_CURL)) {
         return;
     }
     global $rm_fb_sdk_req;
     $gopts = new RM_Options();
     $fb_app_id = $gopts->get_value_of('facebook_app_id');
     $fb_app_secret = $gopts->get_value_of('facebook_app_secret');
     if (!$fb_app_id || !$fb_app_secret) {
         return;
     }
     if ($rm_fb_sdk_req === RM_FB_SDK_REQ_OK) {
         $fb = new Facebook\Facebook(array('app_id' => $fb_app_id, 'app_secret' => $fb_app_secret, 'default_graph_version' => 'v2.2'));
         $helper = $fb->getRedirectLoginHelper();
         try {
             $accessToken = $helper->getAccessToken();
         } catch (Facebook\Exceptions\FacebookResponseException $e) {
             // When Graph returns an error
             echo 'Graph returned an error: ' . $e->getMessage();
             exit;
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             // When validation fails or other local issues
             echo 'Facebook SDK returned an error: ' . $e->getMessage();
             exit;
         }
         if (!isset($accessToken)) {
             if ($helper->getError()) {
                 header('HTTP/1.0 401 Unauthorized');
                 echo "Error: " . $helper->getError() . "\n";
                 echo "Error Code: " . $helper->getErrorCode() . "\n";
                 echo "Error Reason: " . $helper->getErrorReason() . "\n";
                 echo "Error Description: " . $helper->getErrorDescription() . "\n";
             } else {
                 header('HTTP/1.0 400 Bad Request');
                 echo 'Bad request';
             }
             exit;
         }
         // Logged in
         // echo '<h3>Access Token</h3>';
         //var_dump($accessToken->getValue());
         // The OAuth 2.0 client handler helps us manage access tokens
         $oAuth2Client = $fb->getOAuth2Client();
         // Get the access token metadata from /debug_token
         $tokenMetadata = $oAuth2Client->debugToken($accessToken);
         //echo '<h3>Metadata</h3>';
         //var_dump($tokenMetadata);
         // Validation (these will throw FacebookSDKException's when they fail)
         $tokenMetadata->validateAppId($fb_app_id);
         // Replace {app-id} with your app id
         // If you know the user ID this access token belongs to, you can validate it here
         //$tokenMetadata->validateUserId('123');
         $tokenMetadata->validateExpiration();
         if (!$accessToken->isLongLived()) {
             // Exchanges a short-lived access token for a long-lived one
             try {
                 $accessToken2 = $oAuth2Client->getLongLivedAccessToken($accessToken);
             } catch (Facebook\Exceptions\FacebookSDKException $e) {
                 echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
                 exit;
             }
             //echo '<h3>Long-lived</h3>';
             //var_dump($accessToken2->getValue());
         }
         //$_SESSION['fb_access_token'] = (string) $accessToken;
         try {
             // Returns a `Facebook\FacebookResponse` object
             $response = $fb->get('/me?fields=id,name,email,first_name,last_name', (string) $accessToken);
         } catch (Facebook\Exceptions\FacebookResponseException $e) {
             echo 'Graph returned an error: ' . $e->getMessage();
             exit;
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             echo 'Facebook SDK returned an error: ' . $e->getMessage();
             exit;
         }
         $user = $response->getGraphUser();
         //var_dump($user->getFirstName());
         $user_name = $user->getName();
         $user_email = $user->getEmail();
         $user_name = $user->getName();
         $user_fname = $user->getFirstName();
         $user_lname = $user->getLastName();
         $redirection_post = $gopts->get_value_of('post_submission_redirection_url');
         if (email_exists($user_email)) {
             // user is a member
             $user = get_user_by('email', $user_email);
             $user_id = $user->ID;
             wp_set_auth_cookie($user_id, true);
         } else {
             // this user is a guest
             $random_password = wp_generate_password(10, false);
             $user_id = wp_create_user($user_email, $random_password, $user_email);
             if (!is_wp_error($user_id)) {
                 if (function_exists('is_multisite') && is_multisite()) {
                     add_user_to_blog(get_current_blog_id(), $user_id, 'subscriber');
                 }
                 update_user_meta($user_id, 'avatar_image', 'https://graph.facebook.com/' . $user->getId() . '/picture?type=large');
                 wp_update_user(array('ID' => $user_id, 'display_name' => $user_name, 'first_name' => $user_fname, 'last_name' => $user_lname));
                 wp_set_auth_cookie($user_id, true);
             }
         }
     } else {
         $fb = new Facebook(array('appId' => $fb_app_id, 'secret' => $fb_app_secret));
         $user = $fb->getUser();
         if ($user) {
             $user_profile = $fb->api('/me?fields=id,name,email,first_name,last_name');
             if (isset($user_profile['email'])) {
                 $user_email = $user_profile['email'];
                 $redirection_post = $gopts->get_value_of('post_submission_redirection_url');
                 if (email_exists($user_email)) {
                     // user is a member
                     $user = get_user_by('email', $user_email);
                     $user_id = $user->ID;
                     wp_set_auth_cookie($user_id, true);
                 } else {
                     // this user is a guest
                     $random_password = wp_generate_password(10, false);
                     $user_id = wp_create_user($user_email, $random_password, $user_email);
                     if (!is_wp_error($user_id)) {
                         if (function_exists('is_multisite') && is_multisite()) {
                             add_user_to_blog(get_current_blog_id(), $user_id, 'subscriber');
                         }
                         update_user_meta($user_id, 'avatar_image', 'https://graph.facebook.com/' . $user_profile['id'] . '/picture?type=large');
                         wp_update_user(array('ID' => $user_id, 'display_name' => $user_profile['name'], 'first_name' => $user_profile['first_name'], 'last_name' => $user_profile['last_name']));
                         wp_set_auth_cookie($user_id, true);
                     }
                 }
             } else {
                 die('Error: Unable to fetch email address from Facebbok.');
             }
         }
     }
     if ($redirection_post > 0) {
         $after_login_url = get_permalink($redirection_post);
     } else {
         $after_login_url = home_url();
     }
     RM_Utilities::redirect($after_login_url);
 }
function rgt_fb_email_button_shortcode()
{
    $options = get_option('rgt_fb_email_button_settings');
    $app_id = $options['rgt_fb_email_button_app_id'];
    $app_secret = $options['rgt_fb_email_button_app_secret'];
    $current_url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    wp_register_style('rgt_fb_email_button_css', plugins_url('fb_email_button_style.css', __FILE__));
    wp_enqueue_style('rgt_fb_email_button_css');
    if (!($app_id and $app_secret)) {
        $error = rgt_fb_email_button_error_wrapper('Facebook App ID and App Secret must be set in the Settings before using this plugin.');
        return $error;
    } else {
        require_once __DIR__ . '/Facebook_SDK/autoload.php';
        $fb = new Facebook\Facebook(['app_id' => $app_id, 'app_secret' => $app_secret, 'default_graph_version' => 'v2.5', 'default_access_token' => $app_id . '|' . $app_secret]);
        $helper = $fb->getRedirectLoginHelper();
        if (isset($_GET['code'])) {
            // API Callback
            try {
                $accessToken = $helper->getAccessToken();
            } catch (Facebook\Exceptions\FacebookResponseException $e) {
                $error = rgt_fb_email_button_error_wrapper('Invalid Facebook App Info.');
                return $error;
            } catch (Facebook\Exceptions\FacebookSDKException $e) {
                $error = rgt_fb_email_button_error_wrapper('Invalid Facebook App Info.');
                return $error;
            }
            if (isset($accessToken)) {
                $oAuth2Client = $fb->getOAuth2Client();
                $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
                $_SESSION['rgt_fb_email_button_facebook_access_token'] = (string) $longLivedAccessToken;
                // Get data
                $fb->setDefaultAccessToken($longLivedAccessToken);
                try {
                    $response = $fb->get('/me?fields=id,name,email');
                } catch (Facebook\Exceptions\FacebookResponseException $e) {
                    $error = rgt_fb_email_button_error_wrapper('Graph returned an error: ' . $e->getMessage());
                    return $error;
                } catch (Facebook\Exceptions\FacebookSDKException $e) {
                    $error = rgt_fb_email_button_error_wrapper('Facebook SDK returned an error: ' . $e->getMessage());
                    return $error;
                }
                $graphObject = $response->getGraphObject();
                $fb_id = $graphObject->getProperty('id');
                $name = $graphObject->getProperty('name');
                $email = $graphObject->getProperty('email');
                if (!isset($_GET['unsubscribe'])) {
                    rgt_fb_email_button_add_subscriber($fb_id, $name, $email);
                } elseif (wp_verify_nonce($_GET['unsubscribe'], 'fb_email_unsubscribe')) {
                    rgt_fb_email_button_remove_subscriber($fb_id);
                    unset($_SESSION['rgt_fb_email_button_facebook_access_token']);
                }
                $js_redirect = "<script>window.location = '" . remove_query_arg(array('code', 'unsubscribe', 'state')) . "'</script>";
                return $js_redirect;
            }
        }
        $permissions = array('public_profile', 'email');
        if (!isset($_SESSION['rgt_fb_email_button_facebook_access_token']) or !$_SESSION['rgt_fb_email_button_facebook_access_token']) {
            $login_url = $helper->getLoginUrl($current_url, $permissions);
            $button = "<a class=\"btn_fb_subscribe\" onclick=\"location.href='{$login_url}'\"></a>";
        } else {
            $nonce_unsubscribe = wp_nonce_url($current_url, 'fb_email_unsubscribe', 'unsubscribe');
            $unsubscribe_url = $helper->getLoginUrl($nonce_unsubscribe, $permissions);
            $button = "<a class=\"btn_fb_subscribed\" onclick=\"location.href='{$unsubscribe_url}'\"></a>";
        }
        return $button;
    }
}
示例#19
0
$helper = $fb->getRedirectLoginHelper();
$permissions = ['email'];
// optional
if (isset($_SESSION['facebook_access_token'])) {
    $accessToken = $_SESSION['facebook_access_token'];
} else {
    $accessToken = $helper->getAccessToken();
}
if (isset($accessToken)) {
    if (isset($_SESSION['facebook_access_token'])) {
        $fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
    } else {
        // getting short-lived access token
        $_SESSION['facebook_access_token'] = (string) $accessToken;
        // OAuth 2.0 client handler
        $oAuth2Client = $fb->getOAuth2Client();
        // Exchanges a short-lived access token for a long-lived one
        $longLivedAccessToken = $oAuth2Client->getLongLivedAccessToken($_SESSION['facebook_access_token']);
        $_SESSION['facebook_access_token'] = (string) $longLivedAccessToken;
        // setting default access token to be used in script
        $fb->setDefaultAccessToken($_SESSION['facebook_access_token']);
    }
    $profile_request = $fb->get('/me?fields=name,first_name,last_name,email');
    $profile = $profile_request->getGraphNode()->asArray();
    $linkData = ['message' => 'User provided message'];
    $response = $fb->post("/me/feed", $linkData, $accessToken);
    $graphNode = $response->getGraphNode();
    echo 'Posted with id: ' . $graphNode['id'];
} else {
    $loginUrl = $helper->getLoginUrl('http://localhost/Ecommerce/trunk/public_html/fblogin-v5/post_user.php', $permissions);
    echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
示例#20
0
 public function facebook_oauth()
 {
     $this->load->library("FacebookAuth");
     $fb = new Facebook\Facebook(['app_id' => '400987613433600', 'app_secret' => '2e4c483ea56dd2b9be87242321ec32cb', 'default_graph_version' => 'v2.2']);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     if (!isset($accessToken)) {
         if ($helper->getError()) {
             header('HTTP/1.0 401 Unauthorized');
             echo "Error: " . $helper->getError() . "\n";
             echo "Error Code: " . $helper->getErrorCode() . "\n";
             echo "Error Reason: " . $helper->getErrorReason() . "\n";
             echo "Error Description: " . $helper->getErrorDescription() . "\n";
         } else {
             header('HTTP/1.0 400 Bad Request');
             echo 'Bad request';
         }
         exit;
     }
     // The OAuth 2.0 client handler helps us manage access tokens
     $oAuth2Client = $fb->getOAuth2Client();
     // Get the access token metadata from /debug_token
     $tokenMetadata = $oAuth2Client->debugToken($accessToken);
     // Validation (these will throw FacebookSDKException's when they fail)
     $tokenMetadata->validateAppId("400987613433600");
     // If you know the user ID this access token belongs to, you can validate it here
     //$tokenMetadata->validateUserId('123');
     $tokenMetadata->validateExpiration();
     if (!$accessToken->isLongLived()) {
         // Exchanges a short-lived access token for a long-lived one
         try {
             $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
             exit;
         }
     }
     $this->session->set_userdata('fb_access_token', (string) $accessToken);
     try {
         // Returns a `Facebook\FacebookResponse` object
         $fb->setDefaultAccessToken($this->session->userdata('fb_access_token'));
         $response = $fb->get('/me?fields=name,email,bio,birthday,gender,picture');
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     $user = $response->getGraphUser();
     $this->load->model("UserModel", "user_model");
     $this->user_model->register_via_facebook($user);
     redirect("dashboard");
 }