コード例 #1
1
ファイル: Facebook.php プロジェクト: hybridauth/hybridauth
 /**
  * {@inheritdoc}
  */
 function loginFinish()
 {
     $helper = $this->api->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         throw new Hybrid_Exception('Facebook Graph returned an error: ' . $e->getMessage());
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         throw new Hybrid_Exception('Facebook SDK returned an error: ' . $e->getMessage());
     }
     if (!isset($accessToken)) {
         if ($helper->getError()) {
             throw new Hybrid_Exception(sprintf("Could not authorize user, reason: %s (%d)", $helper->getErrorDescription(), $helper->getErrorCode()));
         } else {
             throw new Hybrid_Exception("Could not authorize user. Bad request");
         }
     }
     try {
         // Validate token
         $oAuth2Client = $this->api->getOAuth2Client();
         $tokenMetadata = $oAuth2Client->debugToken($accessToken);
         $tokenMetadata->validateAppId($this->config["keys"]["id"]);
         $tokenMetadata->validateExpiration();
         // Exchanges a short-lived access token for a long-lived one
         if (!$accessToken->isLongLived()) {
             $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
         }
     } catch (FacebookSDKException $e) {
         throw new Hybrid_Exception($e->getMessage(), 0, $e);
     }
     $this->setUserConnected();
     $this->token("access_token", $accessToken->getValue());
 }
コード例 #2
1
 /**
  * Return info about facebook user
  * @param $fields
  * @return array
  * @throws Exception
  */
 public function getMe($fields)
 {
     $client = $this->fb->getOAuth2Client();
     $accessTokenObject = $this->helper->getAccessToken();
     if ($accessTokenObject == null) {
         throw new Exception("User not allowed permissions");
     }
     if ($fields == "" || !is_array($fields) || count($fields) == 0) {
         //array is empty
         $fields = array(ID);
         //set ID field
     }
     try {
         $accessToken = $client->getLongLivedAccessToken($accessTokenObject->getValue());
         $response = $this->fb->get("/me?fields=" . implode(",", $fields), $accessToken);
         $this->setSocialLoginCookie(self::SOCIAL_NAME);
         return $response->getDecodedBody();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         throw new Exception($e->getMessage());
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         throw new Exception($e->getMessage());
     }
 }
コード例 #3
0
ファイル: Facebook.php プロジェクト: svycka/social-user
 /**
  * @param string $token
  *
  * @return UserProfileInterface|null
  */
 protected function getTokenInfo($token)
 {
     try {
         // Get the Facebook\GraphNodes\GraphUser object for the current user.
         $response = $this->facebook->get('/me?fields=id,name,email,first_name,last_name', $token);
         $user = $response->getGraphUser();
         // check if we can get user identifier
         if (empty($user->getId())) {
             return null;
         }
         // do not accept tokens generated not for our application even if they are valid,
         // to protect against "man in the middle" attack
         $tokenMetadata = $this->facebook->getOAuth2Client()->debugToken($token);
         // this is not required, but lets be sure because facebook API changes very often
         $tokenMetadata->validateAppId($this->facebook->getApp()->getId());
         $userProfile = new UserProfile();
         $userProfile->setIdentifier($user->getId());
         $userProfile->setDisplayName($user->getName());
         $userProfile->setFirstName($user->getFirstName());
         $userProfile->setLastName($user->getLastName());
         $userProfile->setEmail($user->getEmail());
         // facebook doesn't allow login with not verified email
         if (!empty($user->getEmail())) {
             $userProfile->setEmailVerified(true);
         }
         return $userProfile;
     } catch (FacebookSDKException $e) {
         return null;
     }
 }
コード例 #4
0
 /**
  * @param string $userAccessToken
  * @return \Facebook\Authentication\AccessToken|null
  * @throws LiveBroadcastOutputException
  */
 public function getLongLivedAccessToken($userAccessToken)
 {
     if (!$this->facebookSDK) {
         $this->initFacebook();
     }
     if (!$userAccessToken) {
         return null;
     }
     try {
         return $this->facebookSDK->getOAuth2Client()->getLongLivedAccessToken($userAccessToken);
     } catch (FacebookSDKException $ex) {
         throw new LiveBroadcastOutputException('Facebook SDK exception: ' . $ex->getMessage());
     }
 }
コード例 #5
0
 /**
  * Get email address or name based on access token.
  *
  * @param AccessToken $accessToken
  *
  * @return mixed
  */
 protected function _getUsername($accessToken)
 {
     $oAuth2Client = $this->_facebook->getOAuth2Client();
     $tokenMetadata = $oAuth2Client->debugToken($accessToken);
     $user = $this->_facebook->get('/' . $tokenMetadata->getUserId() . '?fields=name,email', $accessToken)->getGraphUser();
     return $user->getField('email') !== null ? $user->getField('email') : $user->getField('name');
 }
コード例 #6
0
 /**
  * @Route("/", name="homepage")
  */
 public function indexAction(Request $request)
 {
     $this->get('session')->start();
     $config = ['app_id' => '1690300947880602', 'app_secret' => '0b6107ea187ee9cd79adc66a2dd84254', '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']);
     // 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());
     }
     return new Response();
 }
コード例 #7
0
ファイル: FacebookLogin.php プロジェクト: knedle/social-login
 /**
  * Return info about login user
  * @return array
  * @throws Exception
  */
 public function getMe()
 {
     $client = $this->fb->getOAuth2Client();
     $accessTokenObject = $this->helper->getAccessToken();
     if ($accessTokenObject == null) {
         throw new Exception("User not allowed permissions");
     }
     try {
         $accessToken = $client->getLongLivedAccessToken($accessTokenObject->getValue());
         $response = $this->fb->get('/me?fields=id,name,email', $accessToken);
         return $response->getDecodedBody();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         throw new Exception($e->getMessage());
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         throw new Exception($e->getMessage());
     }
 }
コード例 #8
0
 /**
  * This implementation follow instruction
  *
  * @see https://developers.facebook.com/docs/php/gettingstarted/5.0.0
  *
  * @return AccessToken
  */
 public function getTokenFromRedirect()
 {
     $token = null;
     try {
         $token = $this->getLoginHelper()->getAccessToken($this->getRedirectUrl());
         // exchange a long-live access token
         $oAuth2Client = $this->facebook->getOAuth2Client();
         $token = $oAuth2Client->getLongLivedAccessToken($token);
     } catch (FacebookResponseException $e) {
         throw new \RuntimeException('Graph returned an error: ' . $e->getMessage());
     } catch (FacebookSDKException $e) {
         // When validation fails or other local issues
         throw new \RuntimeException('Facebook SDK returned an error: ' . $e->getMessage());
     }
     if (!$token instanceof AccessToken) {
         throw new \RuntimeException('Could not authorize request on Facebook');
     }
     // store access token
     $_SESSION[self::FACEBOOK_SESSION_KEY] = $token->__toString();
     $this->facebook->setDefaultAccessToken($token);
     return $token;
 }
コード例 #9
0
 /**
  * Get user access token.
  *
  * @param   bool  $longLived  Exchange short-lived access token for a long-lived one
  * @return  AccessToken
  * @throws  SystemException
  */
 public function getUserAccessToken($longLived = false)
 {
     $accessToken = null;
     $helper = $this->fb->getJavaScriptHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (FacebookResponseException $e) {
         Log::error('Facebook Graph API call failed when getting an access token.', ['error' => $e->getMessage(), 'code' => $e->getCode(), 'subcode' => $e->getSubErrorCode(), 'status' => $e->getHttpStatusCode(), 'type' => $e->getErrorType()]);
         throw new SystemException('Facebook Graph API error: ' . $e->getMessage());
     } catch (FacebookSDKException $e) {
         Log::error('Facebook SDK error when getting an access token.', ['error' => $e->getMessage(), 'code' => $e->getCode()]);
         throw new SystemException('Facebook SDK error: ' . $e->getMessage());
     }
     if ($longLived && $accessToken && !$accessToken->isLongLived()) {
         try {
             $oAuth2Client = $this->fb->getOAuth2Client();
             $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
         } catch (FacebookSDKException $e) {
             Log::error('Facebook SDK error when getting a long-lived access token.', ['error' => $e->getMessage(), 'code' => $e->getCode()]);
         }
     }
     return $accessToken;
 }
コード例 #10
0
 public function getClient()
 {
     return $this->application->getOAuth2Client();
 }
コード例 #11
0
 public function init()
 {
     parent::init();
     $fb_client = new Facebook(['app_id' => $this->appId, 'app_secret' => $this->secret, 'default_graph_version' => 'v2.2']);
     $fb_helper = $fb_client->getRedirectLoginHelper();
     try {
         $accessToken = $fb_helper->getAccessToken();
     } catch (FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     if (!isset($accessToken)) {
         if ($fb_helper->getError()) {
             header('HTTP/1.0 401 Unauthorized');
             echo "Error: " . $fb_helper->getError() . "\n";
             echo "Error Code: " . $fb_helper->getErrorCode() . "\n";
             echo "Error Reason: " . $fb_helper->getErrorReason() . "\n";
             echo "Error Description: " . $fb_helper->getErrorDescription() . "\n";
         } else {
             header('HTTP/1.0 400 Bad Request');
             echo 'Bad request';
         }
         exit;
     }
     echo '<h3>Access Token</h3>';
     var_dump($accessToken->getValue());
     $oAuth2Client = $fb_client->getOAuth2Client();
     $tokenMetadata = $oAuth2Client->debugToken($accessToken);
     echo '<h3>Metadata</h3>';
     var_dump($tokenMetadata);
     $tokenMetadata->validateAppId($this->appId);
     $tokenMetadata->validateExpiration();
     if (!$accessToken->isLongLived()) {
         // Exchanges a short-lived access token for a long-lived one
         try {
             $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
         } catch (FacebookSDKException $e) {
             echo "<p>Error getting long-lived access token: " . $fb_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
         $response = $fb_client->get('/me?fields=id,name', $accessToken);
     } catch (FacebookResponseException $e) {
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (FacebookSDKException $e) {
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     $user = $response->getGraphUser();
 }
コード例 #12
0
 public function index()
 {
     $user_data = "";
     // if(Session::has('login_type')){
     // 	$_SESSION['login_type'] = Session::get('login_type');
     // }
     if (isset($_SESSION['login_type'])) {
         if ($_SESSION['login_type'] == "facebook") {
             $fb = new Facebook\Facebook(['app_id' => Config::get('facebook.appid'), 'app_secret' => Config::get('facebook.secret'), 'default_graph_version' => 'v2.2']);
             $helper = $fb->getRedirectLoginHelper();
             if (!isset($_SESSION['fb_access_token'])) {
                 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;
                 }
                 $oAuth2Client = $fb->getOAuth2Client();
                 $tokenMetadata = $oAuth2Client->debugToken($accessToken);
                 $tokenMetadata->validateAppId(Config::get('facebook.appid'));
                 $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;
                     }
                 }
                 $_SESSION['fb_access_token'] = (string) $accessToken;
             }
             try {
                 // Returns a `Facebook\FacebookResponse` object
                 $response = $fb->get('/me?fields=id,name,last_name', $_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->getGraphNode();
             $user_data = array('type' => $_SESSION['login_type'], 'Name' => $user->getField('name'), 'ID' => $user->getField('id'));
         } else {
             if ($_SESSION['login_type'] == "google") {
                 $user_data = array('type' => $_SESSION['login_type'], 'Name' => $_SESSION['name'], 'ID' => $_SESSION['id']);
             } else {
                 if (isset($_REQUEST['oauth_verifier'])) {
                     if (!isset($_SESSION['access_token'])) {
                         $request_token = [];
                         $request_token['oauth_token'] = $_SESSION['oauth_token'];
                         $request_token['oauth_token_secret'] = $_SESSION['oauth_token_secret'];
                         $connection = new TwitterOAuth(Config::get('twitter.appid'), Config::get('twitter.secret'), $request_token['oauth_token'], $request_token['oauth_token_secret']);
                         $access_token = $connection->oauth("oauth/access_token", array("oauth_verifier" => $_REQUEST['oauth_verifier']));
                         $_SESSION['access_token'] = $access_token;
                     }
                 }
                 $access_token = $_SESSION['access_token'];
                 $connection = new TwitterOAuth(Config::get('twitter.appid'), Config::get('twitter.secret'), $access_token['oauth_token'], $access_token['oauth_token_secret']);
                 $user = $connection->get("account/verify_credentials");
                 $user_data = array('type' => $_SESSION['login_type'], 'Name' => $user->screen_name, 'ID' => $user->id);
             }
         }
         $user = App\user::where('oauthID', $user_data['ID'])->first();
         if (is_null($user)) {
             return view('Registration.registration', $user_data);
         }
         $_SESSION['user_id'] = $user_data['ID'];
         return view('home', $user_data);
     } else {
         return redirect("/");
     }
 }
コード例 #13
0
ファイル: Facebook.php プロジェクト: kris-nova/API
<?php

use Facebook\Facebook;
use API\src\Config\Config;
use API\src\Server\Session;
require_once __DIR__ . '/../Autoload.php';
$fb = new Facebook(['app_id' => Config::getConfig('FacebookAppId'), 'app_secret' => Config::getConfig('FacebookSecret'), 'default_graph_version' => Config::getConfig('FacebookAPIVersion')]);
$app = $fb->getApp();
$accessToken = $app->getAccessToken();
$accessTokenValue = $accessToken->getValue();
$oauth2 = $fb->getOAuth2Client();
$tokenMeta = $oauth2->debugToken($accessToken);
$tokenMeta->validateAppId(Config::getConfig('FacebookAppId'));
$tokenMeta->validateExpiration();
コード例 #14
0
 public function fallbackAction()
 {
     $fb = new Facebook(['app_id' => $this->getParameter('tanna_user.facebook.app_id'), 'app_secret' => $this->getParameter('tanna_user.facebook.app_secret'), 'default_graph_version' => 'v2.2']);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (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((string) $this->getParameter('tanna_user.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 (FacebookSDKException $e) {
             echo "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n";
             exit;
         }
     }
     try {
         // Returns a `Facebook\FacebookResponse` object
         $response = $fb->get('/me?fields=id,email,first_name,last_name,gender,locale,timezone,location,birthday', $accessToken);
     } catch (FacebookResponseException $e) {
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (FacebookSDKException $e) {
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     $facebookUser = $response->getGraphUser();
     $om = $this->get('tanna_user.doctrine.om');
     $user = $om->getRepository($this->getParameter('tanna_user.user.class'))->findOneByEmail($facebookUser['email']);
     //register user
     if ($user === null) {
         $response = $this->registerUser($facebookUser);
         if ($response instanceof UserInterface) {
             //login user and redirect him
             return $this->loginAndRedirect($response);
         } else {
             //@todo redirect and show errors
             die('show errors');
         }
     } else {
         return $this->loginAndRedirect($user);
     }
     // 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');
 }
コード例 #15
0
 public function facebookLogin()
 {
     // Small hack required for CakePHP 3.x and Facebook class
     if (!session_id()) {
         $this->request->session()->start();
     }
     $fb = new Facebook\Facebook(['app_id' => FB_APP_ID, 'app_secret' => FB_SECRET, 'default_graph_version' => FB_API_VERSION]);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         $this->log('Graph returned an error: ' . $e->getMessage());
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         $this->log('Facebook SDK returned an error: ' . $e->getMessage());
         exit;
     }
     if (!isset($accessToken)) {
         if ($helper->getError()) {
             header('HTTP/1.0 401 Unauthorized');
             $this->log("Error: " . $helper->getError());
             $this->log("Error Code: " . $helper->getErrorCode());
             $this->log("Error Reason: " . $helper->getErrorReason());
             $this->log("Error Description: " . $helper->getErrorDescription());
         } else {
             header('HTTP/1.0 400 Bad Request');
             $this->log('Bad request');
         }
         exit;
     }
     // Logged in
     $this->log($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);
     // 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();
     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;
         }
     }
     $response = $fb->get('/me?fields=id,name,email', (string) $accessToken);
     $facebookUser = $response->getGraphUser();
     if ($this->validateUserExists($facebookUser['email'])) {
         $user = $this->Users->getByEmail($facebookUser['email']);
     } else {
         $userData = array('name' => $facebookUser['name'], 'phone' => null, 'email' => $facebookUser['email'], 'password' => '', 'modified' => new \DateTime('now'), 'created' => new \DateTime('now'), 'profile' => PROFILE_CUSTOMER, 'facebook_id' => $facebookUser['id']);
         $user = $this->Users->newEntity($userData);
         $user = $this->Users->save($user);
     }
     if ($user) {
         $this->Auth->setUser($user->toArray());
     }
     $this->redirect('/dashboard');
 }
コード例 #16
0
 public function loginFacebook()
 {
     $data = Session::get('data');
     $fb = new Facebook\Facebook(['app_id' => config('socialpack.app_id'), 'app_secret' => config('socialpack.app_secret'), 'default_graph_version' => config('socialpack.default_graph_version')]);
     $helper = $fb->getRedirectLoginHelper();
     $callback_url = url('/') . '/loginFacebook';
     $permissions = ['user_birthday', 'user_location', 'user_website', 'email', 'user_friends', 'user_posts', 'user_photos', 'publish_pages', 'user_education_history', 'user_about_me', 'publish_actions'];
     // optional
     try {
         if (Session::has('facebook_access_token')) {
             $accessToken = $_SESSION['facebook_access_token'];
         } else {
             $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 (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']);
         }
         // validating the access token
         try {
             $request = $fb->get('/me');
         } catch (Facebook\Exceptions\FacebookResponseException $e) {
             // When Graph returns an error
             if ($e->getCode() == 190) {
                 unset($_SESSION['facebook_access_token']);
                 $helper = $fb->getRedirectLoginHelper();
                 $loginUrl = $helper->getLoginUrl((string) $callback_url, $permissions);
                 echo "<script>window.top.location.href='" . $loginUrl . "'</script>";
             }
             exit;
         } catch (Facebook\Exceptions\FacebookSDKException $e) {
             // When validation fails or other local issues
             echo 'Facebook SDK returned an error: ' . $e->getMessage();
             exit;
         }
         if (isset($data) && !empty($data)) {
             if (isset($data['profile']) && !empty($data['profile'])) {
                 if ($data['profile'] == "yes") {
                     $profile = $this->getProfileInfoFacebook($fb);
                     return $profile;
                 }
             }
             if (isset($data['friends']) && !empty($data['friends'])) {
                 if ($data['friends'] == "yes") {
                     $friends = $this->getFiendsFacebook($fb);
                     return $friends;
                 }
             }
             if (isset($data['profile_image']) && !empty($data['profile_image'])) {
                 if ($data['profile_image'] == "yes") {
                     $profile_image = $this->getProfileImageFacebook($fb);
                     return $profile_image;
                 }
             }
             if (isset($data['published_post']) && !empty($data['published_post'])) {
                 if ($data['published_post'] == "yes") {
                     $published_post = $this->getPublishPostFacebook($fb);
                     return $published_post;
                 }
             }
             if (isset($data['like_pages']) && !empty($data['like_pages'])) {
                 if ($data['like_pages'] == "yes") {
                     $like_pages = $this->getLikePagesFacebook($fb);
                     return $like_pages;
                 }
             }
             if (isset($data['all_photos']) && !empty($data['all_photos'])) {
                 if ($data['all_photos'] == "yes") {
                     $all_photos = $this->getAllPhotosFacebook($fb);
                     return $all_photos;
                 }
             }
             if (isset($data['published_post']) && !empty($data['published_post'])) {
                 if ($data['published_post'] == "yes") {
                     $published_post = $this->getPublishPostFacebook($fb);
                     return $published_post;
                 }
             }
             if (isset($data['post_timeline']) && !empty($data['post_timeline'])) {
                 if ($data['post_timeline']["show"] == "yes") {
                     $post_timeline = $this->postOnTimelineFacebook($fb, $data['post_timeline']["message"]);
                     return $post_timeline;
                 }
             }
             if (isset($data['post_link_timeline']) && !empty($data['post_link_timeline'])) {
                 if ($data['post_link_timeline']["show"] == "yes") {
                     $post_timeline = $this->postLinkOnTimelineFacebook($fb, $data['post_link_timeline']["link"]);
                     return $post_timeline;
                 }
             }
             if (isset($data['post_image_timeline']) && !empty($data['post_image_timeline'])) {
                 if ($data['post_image_timeline']["show"] == "yes") {
                     $post_image_timeline = $this->postImageOnTimelineFacebook($fb, $data['post_timeline']["message"], $data['post_timeline']["url"]);
                     return $post_image_timeline;
                 }
             }
         }
     } else {
         // replace your website URL same as added in the developers.facebook.com/apps e.g. if you used http instead of https and you used non-www version or www version of your website then you must add the same here
         $loginUrl = $helper->getLoginUrl((string) $callback_url, $permissions);
         echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
     }
 }
コード例 #17
0
 /**
  * @Route("/fb-callback", name="fb-callback")
  */
 public function callbackAction(Request $request)
 {
     #validar que session este inicializado
     if (!session_id()) {
         session_start();
     }
     $fb = new Facebook(['app_id' => '460859080767262', 'app_secret' => '69915f389cdfa981be8dfb98276cbaf2', 'default_graph_version' => 'v2.5']);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (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('460859080767262');
     // 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 (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;
     $session = new Session();
     $session->set('fb_access_token', (string) $accessToken);
     #get info user
     try {
         // Returns a `Facebook\FacebookResponse` object
         $response = $fb->get('/me?fields=id,name,email', $accessToken);
     } catch (FacebookResponseException $e) {
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (FacebookSDKException $e) {
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     $user = $response->getGraphUser();
     echo '<br><br>Name: ' . $user['name'];
     echo '<br><br>Email: ' . $user['email'];
     // 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');
     //echo $this->generateUrl('loged');exit;
     return $this->redirect($this->generateUrl('facebook'));
 }
コード例 #18
0
 /**
  * @param Request $request
  * @return \Symfony\Component\HttpFoundation\RedirectResponse
  */
 public function facebookCodeAction(Request $request)
 {
     try {
         $session = new Session();
         $session->start();
     } catch (\Exception $ex) {
     }
     $appId = $this->getParameter("gfb_social_client.facebook.app_id");
     $appSecret = $this->getParameter("gfb_social_client.facebook.app_secret");
     $version = $this->getParameter("gfb_social_client.facebook.version");
     $fb = new Facebook(array("app_id" => $appId, "app_secret" => $appSecret, "default_graph_version" => $version));
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (FacebookResponseException $e) {
         echo "Graph returned an error: " . $e->getMessage();
         exit;
     } catch (FacebookSDKException $e) {
         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($appId);
     // 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 (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[FacebookService::FB_ACCESS_TOKEN_SESSION] = (string) $accessToken;
     // 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');
     return null;
 }
コード例 #19
0
 public function processFBLogin(Request $request)
 {
     $fb = new Facebook(['app_id' => config('facebook.app_id'), 'app_secret' => config('facebook.app_secret'), 'default_graph_version' => 'v2.2']);
     $redirect_url = $request->getSchemeAndHttpHost() . '/fblogin';
     $code = $request->input('code');
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
         if (!$accessToken->isLongLived()) {
             $oAuth2Client = $fb->getOAuth2Client();
             // Exchanges a short-lived access token for a long-lived one
             $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
         }
         $fb->setDefaultAccessToken($accessToken);
         $response = $fb->get('/me?fields=id,name,email');
         $plainOldArray = $response->getDecodedBody();
         //if user exist sign them in otherwise sign them up
         $query = ParseUser::query();
         $query->equalTo("username", 'FB:' . $plainOldArray['id']);
         $results = $query->find();
         if (count($results) === 1) {
             $user = ParseUser::logIn('FB:' . $plainOldArray['id'], config('facebook.upwd'));
             $user->set('social', "facebook:" . $accessToken);
             return $this->determineRoute($request);
         } else {
             $user = new ParseUser();
             $user->set("username", 'FB:' . $plainOldArray['id']);
             $user->set("password", config('facebook.upwd'));
             $user->set("email", "FB_" . $plainOldArray['email']);
             $user->set("name", $plainOldArray['name']);
             $user->set("realEmail", $plainOldArray['email']);
             $user->set("social", "facebook:" . $accessToken);
             try {
                 $user->signUp();
                 return $this->determineRoute($request);
             } catch (ParseException $ex) {
                 var_dump("Save Error");
                 // Show the error message somewhere and let the user try again.
                 echo "Error: " . $ex->getCode() . " " . $ex->getMessage();
                 var_dump($plainOldArray['email']);
                 var_dump($accessToken);
                 die;
             }
         }
     } catch (FacebookRequestException $ex) {
         // When Facebook returns an error
         echo "Error: " . $ex->getCode() . " " . $ex->getMessage();
         die;
     } catch (\Exception $ex) {
         // When validation fails or other local issues
         //var_dump($plainOldArray['email']);
         //var_dump($accessToken);
         echo "Error: " . $ex->getCode() . " " . $ex->getMessage();
         die;
     }
     if (!empty($accessToken)) {
         // Logged in.
         //$access_token = $helper->getAccessToken();
         echo "LOGGED IN";
         die;
     } else {
         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";
             exit;
         } else {
             return redirect()->route('login');
         }
     }
 }
コード例 #20
0
 public function callback()
 {
     $fb = new Facebook(['app_id' => Config::get('facebook.app_id'), 'app_secret' => Config::get('facebook.app_secret'), 'default_graph_version' => Config::get('facebook.default_graph_version'), 'persistent_data_handler' => Config::get('facebook.persistent_data_handler')]);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         return Redirect::to('/')->with('mensaje', 'Graph returned an error: ' . $e->getMessage());
         exit;
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         return Redirect::to('/')->with('mensaje', '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::get('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) {
             return Redirect::to('/')->with('mensaje', "<p>Error getting long-lived access token: " . $helper->getMessage() . "</p>\n\n");
             exit;
         }
         //echo '<h3>Long-lived</h3>';
         //var_dump($accessToken->getValue());
     }
     Session::put('fb_access_token', (string) $accessToken);
     // User is logged in with a long-lived access token.
     // You can redirect them to a members-only page.
     return Redirect::to('/')->with('mensaje', 'Ya puede publicar');
 }