コード例 #1
0
 /**
  * @see OAuth2\IOAuth2GrantExtension::checkGrantExtension
  */
 public function checkGrantExtension(IOAuth2Client $client, array $inputData, array $authHeaders)
 {
     if (!isset($inputData['facebook_access_token'])) {
         return false;
     }
     $this->facebookSdk->setDefaultAccessToken($inputData['facebook_access_token']);
     try {
         // Try to get the user with the facebook token from Open Graph
         $fbData = $this->facebookSdk->get('/me?fields=email,id,first_name,last_name,name,name_format');
         if (!$fbData instanceof \Facebook\FacebookResponse) {
             return false;
         }
         // Check if a user match in database with the facebook id
         $user = $this->userManager->findUserBy(['facebookId' => $fbData->getDecodedBody()['id']]);
         // If none found, try to match email
         if (null === $user && isset($fbData->getDecodedBody()['email'])) {
             $user = $this->userManager->findUserBy(['email' => $fbData->getDecodedBody()['email']]);
         }
         // If no user found, register a new user and grant token
         if (null === $user) {
             // TODO: Create new user
             return false;
         } else {
             // Else, return the access_token for the user
             // Associate user with facebookId
             $user->setFacebookId($fbData->getDecodedBody()['id']);
             $this->userManager->updateUser($user);
             return array('data' => $user);
         }
     } catch (\FacebookApiExceptionion $e) {
         return false;
     }
 }
コード例 #2
0
ファイル: Controller.php プロジェクト: amnuts/LikeLight
 /**
  * Instantiate and return the Facebook object
  *
  * @return Facebook
  */
 public function fb()
 {
     if ($this->facebookApi === null) {
         $this->facebookApi = new Facebook((array) $this->config->get('fb_config'));
         if (!empty($this->config->get('fb_token')->long)) {
             $this->facebookApi->setDefaultAccessToken($this->config->get('fb_token')->long);
         }
     }
     return $this->facebookApi;
 }
コード例 #3
0
 public function publishOnPage(Post $post, $message = null)
 {
     $response = new FacebookPostAsPageResponse();
     $accessToken = $this->getUserLongAccessToken();
     if (!$post->getPublished()) {
         return $response->setException(new \Exception('flash_batch_facebook_post_not_published'));
     }
     if ($accessToken->tokenIsEmpty()) {
         return $response->setException(new \Exception('flash_batch_facebook_access_token_empty'));
     }
     $this->application->setDefaultAccessToken($accessToken->getAccessToken());
     try {
         $getPageAccessToken = $this->application->sendRequest('GET', '/' . $this->pageId, array('fields' => 'access_token'))->getDecodedBody();
         $params = array('message' => null !== $message ? $message : '', 'name' => $post->getTitle(), 'caption' => $post->getDescription(), 'link' => $this->router->generate('front_article_view', array('slug' => $post->getSlug()), true));
         if (count($post->getImages()) > 0) {
             $hompage = $this->router->generate('homepage', array(), true);
             $imgWebPath = $this->assetsHelper->getUrl($post->getPreviewImage()->getWebPath());
             $params['picture'] = $hompage . $imgWebPath;
         }
         $endPoint = null === $post->getFbId() ? $this->pageId . '/feed' : $post->getFbId();
         $postAsPage = $this->application->post('/' . $endPoint, $params, $getPageAccessToken['access_token'])->getDecodedBody();
         $response->setId(isset($postAsPage['id']) ? $postAsPage['id'] : $post->getFbId());
     } catch (\Exception $e) {
         return $response->setException($e);
     }
     return $response;
 }
 public function cancelEvent($facebook_event_id)
 {
     $user = $this->container->get('security.token_storage')->getToken()->getUser();
     $user_access_token = $user->getFacebookAccessToken();
     if (!$user_access_token) {
         return json_encode(['message' => 'Not logged in', 'success' => false]);
     }
     $this->fb->setDefaultAccessToken($user_access_token);
     $attendResponse = null;
     try {
         $attendResponse = $this->fb->post($facebook_event_id . '/declined');
     } catch (FacebookResponseException $ex) {
         return false;
         // @TODO: Log stack trace.
     }
     $attendResponse = $attendResponse->getGraphNode()->asArray();
     if ($attendResponse['success'] === true) {
         /**
          * @var FacebookEvent $facebookEvent
          */
         $facebookEvent = $this->container->get('doctrine')->getRepository('NFQKVKScraperBundle:FacebookEvent')->getByFacebookId($facebook_event_id);
         $this->container->get('doctrine')->getRepository('NFQKVKScraperBundle:UserEvent')->deleteAttendedEvent($user->getId(), $facebookEvent->getEvent()->getId());
     }
     return $attendResponse;
 }
コード例 #5
0
ファイル: Processor.php プロジェクト: vitalsaude/api
 /**
  * Create an instance of Facebook session
  */
 private function set_fb_request_session()
 {
     $settings = array('app_id' => self::$appId, 'app_secret' => self::$appSecret, 'default_graph_version' => 'v2.5');
     $fb = new Facebook\Facebook($settings);
     $fb->setDefaultAccessToken(self::$fbToken);
     self::$fbSession = $fb;
 }
コード例 #6
0
 public function fbUserInfoAction()
 {
     $fb = new Facebook(['app_id' => '1475718472749501', 'app_secret' => 'a67fee083c27186f52030ff3a72f24f9', 'default_graph_version' => 'v2.4']);
     try {
         $helper = $fb->getJavaScriptHelper();
         $accessToken = $helper->getAccessToken();
         $fb->setDefaultAccessToken((string) $accessToken);
         $response = $fb->get('/me?locale=en_US&fields=name,email');
         $userNode = $response->getGraphUser();
         $email = $userNode->getField('email');
         $name = $userNode->getField('name');
         $arr = explode("@", $email);
         $login = $arr[0];
         $arr2 = explode(" ", $name);
         $firstname = $arr2[0];
         $lastname = $arr2[1];
         return new JsonResponse(['firstname' => $firstname, 'lastname' => $lastname, 'login' => $login, 'email' => $email]);
     } 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;
     }
     exit;
 }
コード例 #7
0
ファイル: FacebookController.php プロジェクト: Aerue/avalia
 public function index()
 {
     $fb = new Facebook(['app_id' => '178541382481710', 'app_secret' => '00ad5032a61d3ca526c6693f006db028', 'default_graph_version' => 'v2.4']);
     $fb->setDefaultAccessToken('178541382481710|4K7VTpySNyFIp2gIKlAY3T5pXAc');
     $response = $fb->get('/LesGetsOfficiel/feed?fields=id,message,full_picture,link,type&limit=100');
     $response = $response->getDecodedBody();
     debug($response);
     die;
 }
コード例 #8
0
 /**
  * @param LiveBroadcast  $liveBroadcast
  * @param OutputFacebook $outputFacebook
  * @return null|string
  * @throws LiveBroadcastOutputException
  */
 public function createFacebookLiveVideo(LiveBroadcast $liveBroadcast, OutputFacebook $outputFacebook)
 {
     if (!$this->facebookSDK) {
         $this->initFacebook();
     }
     try {
         $params = array('title' => $liveBroadcast->getName(), 'description' => $liveBroadcast->getDescription());
         $this->facebookSDK->setDefaultAccessToken($outputFacebook->getAccessToken());
         $response = $this->facebookSDK->post($outputFacebook->getEntityId() . '/live_videos', $params);
     } catch (FacebookResponseException $ex) {
         throw new LiveBroadcastOutputException('Facebook exception: ' . $ex->getMessage());
     } catch (FacebookSDKException $ex) {
         throw new LiveBroadcastOutputException('Facebook SDK exception: ' . $ex->getMessage());
     }
     $body = $response->getDecodedBody();
     if (array_key_exists('stream_url', $body)) {
         return $body['stream_url'];
     }
     return null;
 }
コード例 #9
0
 /**
  * @param $userId
  *
  * @return FacebookAdsAuthContainer
  */
 public function getAuthContainer($userId)
 {
     $oauthTokens = $this->MediaPlatformUser->getOauthTokens($userId);
     if (empty($oauthTokens)) {
         throw new NotFoundException('Could not find the oauth tokens for MediaPlatformUser #' . $userId . '.');
     }
     $facebookAuthContainer = new FacebookAdsAuthContainer();
     $this->_facebook->setDefaultAccessToken($oauthTokens['OauthToken']['access_token']);
     $facebookAuthContainer->facebookSdk = $this->_facebook;
     $facebookAuthContainer->facebookAds = Api::init(Configure::read('FacebookAds.app_id'), Configure::read('FacebookAds.app_secret'), $oauthTokens['OauthToken']['access_token']);
     $this->_sendEventIfTokenExpiresInTwoWeeks($userId, $oauthTokens['OauthToken']['token_expires']);
     return $facebookAuthContainer;
 }
コード例 #10
0
 /**
  * Example middleware invokable class
  *
  * @param  \Psr\Http\Message\ServerRequestInterface $request  PSR7 request
  * @param  \Psr\Http\Message\ResponseInterface      $response PSR7 response
  * @param  callable                                 $next     Next middleware
  *
  * @return \Psr\Http\Message\ResponseInterface
  */
 public function __invoke($request, $response, $next)
 {
     if (isset($_REQUEST['accessToken'])) {
         $accessToken = $_REQUEST['accessToken'];
         $this->fb->setDefaultAccessToken($accessToken);
     } else {
         /* @var $helper FacebookJavaScriptHelper */
         $helper = $this->fb->getJavaScriptHelper();
         $accessToken = $helper->getAccessToken();
     }
     if (!isset($accessToken)) {
         die("Not logged in or request expired");
     }
     try {
         /* @var $fbresponse FacebookResponse */
         $fbresponse = $this->fb->get('/me?fields=id', $accessToken);
         $user = $fbresponse->getGraphUser();
     } catch (Exception $e) {
         die($e->getMessage());
     }
     $next->setArgument('userid', $user->getId());
     $response = $next($request, $response);
     return $response;
 }
コード例 #11
0
ファイル: User.php プロジェクト: naomilwx/sharetaxi
 private static function getFacebookFriends($user, $token)
 {
     $ids = array();
     $fbConfig['default_access_token'] = $token;
     $fb = new Facebook(Config::get('services.facebook'));
     $fb->setDefaultAccessToken($token);
     $response = $fb->get('/me/friends', $token)->getDecodedBody()['data'];
     $friendsList = $response;
     foreach ($friendsList as $friend) {
         $userAuth = UserAuthToken::where('service', 'facebook')->where('service_id', $friend['id'])->first();
         if ($userAuth) {
             $user_id = $userAuth->user->id;
             $ids[$user_id] = $userAuth->service_id;
         }
     }
     //ids: array(user_id => facebook_id)
     return $ids;
 }
コード例 #12
0
 /**
  * @return GraphEdge
  */
 public function getFeed()
 {
     $sinceDate = new \DateTime($this->startingDate);
     $request = new FacebookRequest($this->facebookApp, $this->facebookAccessToken, 'GET', sprintf('/%d/posts', $this->facebookPageId), ['fields' => 'message, created_time, status_type, attachments, place', 'since' => $sinceDate->getTimestamp()]);
     $fb = new Facebook(["app_id" => $this->facebookApp->getId(), "app_secret" => $this->facebookApp->getSecret(), "default_graph_version" => 'v2.5']);
     $fb->setDefaultAccessToken($this->facebookAccessToken);
     try {
         $response = $fb->getClient()->sendRequest($request);
     } 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;
     }
     $timelineObject = $this->timelineObjectFiller($response->getGraphEdge());
     return $timelineObject;
 }
コード例 #13
0
 public function fbcallback()
 {
     //Initialize facebook api
     $fb = new Facebook(['app_id' => self::FB_APP_ID, 'app_secret' => self::FB_APP_SECRET, 'default_graph_version' => self::FB_APP_VERSION]);
     $helper = $fb->getRedirectLoginHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
         exit;
     } catch (Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     if (isset($accessToken)) {
         // Logged in!
         $fb->setDefaultAccessToken($accessToken);
         try {
             $response = $fb->get('/me?locale=en_US&fields=name,email,gender,age_range,picture,first_name,last_name,middle_name,birthday,hometown');
             $userNode = $response->getGraphUser();
         } catch (Exceptions\FacebookResponseException $e) {
             // When Graph returns an error
             echo 'Graph returned an error: ' . $e->getMessage();
             exit;
         } catch (Exceptions\FacebookSDKException $e) {
             // When validation fails or other local issues
             echo 'Facebook SDK returned an error: ' . $e->getMessage();
             exit;
         }
         $this->loadComponent('GeoIP');
         $pictureUser = $userNode->getPicture()->asArray();
         $userNode = array('type' => 0, 'status' => 1, 'password' => str_replace(' ', '', strtolower($userNode->getName())), 'email' => $userNode->getEmail(), 'full_name' => $userNode->getName(), 'gender' => $userNode->getGender(), 'image' => $pictureUser['url'], 'birthday' => $userNode->getBirthday(), 'address' => $userNode->getHometown(), 'facebook' => 'https://www.facebook.com/' . $userNode->getId());
         // Now you can redirect to another page and use the
         $this->request->session()->write('fb_user', $userNode);
         $this->redirect('/users/register');
     }
 }
コード例 #14
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;
 }
コード例 #15
0
ファイル: UserController.php プロジェクト: jarriaga/endaroo
 /**
  * This method save or log in a user when is using FacebookAccount
  * @param $request
  * @return \Symfony\Component\HttpFoundation\Response
  */
 private function loginFacebookUser($request)
 {
     //load the facebook SDK object
     $fb = new Facebook(['app_id' => env('FB_API_ID'), 'app_secret' => env('FB_API_SECRET'), 'default_graph_version' => 'v2.2']);
     //set the token that whe receive from the request APP
     $fb->setDefaultAccessToken($request->input('token'));
     //Get the graph query
     try {
         $response = $fb->get('/me?fields=id,name,email');
         $fbUser = $response->getGraphUser();
     } catch (FacebookResponseException $e) {
         return response()->json($e->getMessage(), 401);
     } catch (FacebookSDKException $e) {
         return response()->json($e->getMessage(), 400);
     }
     //instantiate the new user
     $user = new User();
     //find by facebook_id and get the mongodb collection for users
     $users = $user->getCollection();
     $result = $users->findOne(['facebook_id' => $fbUser['id']]);
     if ($result) {
         var_dump('log in process by idfb');
         die;
     }
     //find by email
     $result = $users->findOne(['email' => $fbUser['email']]);
     if ($result) {
         var_dump('log in process by email');
         die;
     }
     //if not found then fill data and save account
     $user->fill($request);
     if (!$user->save()) {
         return response()->json('Error, the user was not created', 400);
     }
     return response()->json('success', 200);
 }
コード例 #16
0
 public function facebookAuth(Request $request, $slug)
 {
     try {
         $stack = Stack::where('slug', '=', $slug)->firstOrFail();
         $stackIntegration = StackIntegration::where('stack_id', '=', $stack->id)->where('type', '=', 'facebook')->where('is_enabled', '=', true)->firstOrFail();
         $fb = new Facebook(['app_id' => $stackIntegration->config['appId'], 'app_secret' => $stackIntegration->config['appSecret'], 'default_graph_version' => 'v2.4']);
         $jsHelper = $fb->getJavaScriptHelper();
         $accessToken = $jsHelper->getAccessToken();
         if (!isset($accessToken)) {
             throw new Exeption('Facebook Authentication failed');
         }
         $fb->setDefaultAccessToken($accessToken);
         $response = $fb->get('/me?fields=email,name,first_name,last_name,locale,gender');
         $userNode = $response->getGraphUser();
         if ($request->has('email')) {
             $userNode['email'] = $request->input('email');
         }
         $stackMember = StackMember::where('stack_id', '=', $stack->id)->where('email', '=', $userNode['email'])->first();
         if (!$stackMember) {
             $validSignupIp = $this->validSignupIp($request, $stack);
             $stackMember = new StackMember();
             $stackMember->email = $userNode['email'];
             $stackMember->referral_token = $this->generateRandomToken($stack->id);
             $stackMember->is_valid_signup_ip = $validSignupIp;
             $stackMember->name = $userNode['name'];
             $stackMember->first_name = $userNode['first_name'];
             $stackMember->last_name = $userNode['last_name'];
             $stackMember->gender = $userNode['gender'];
             $stackMember->locale = $userNode['locale'];
             $stackMember->fb_id = $userNode['id'];
             $stackMember->fb_accesstoken = $accessToken;
             $stackMember->ip = $request->getClientIp();
             $stackMember->stack_id = $stack->id;
             if ($request->session()->get('referral_user')) {
                 $stackMember->referred_by = $request->session()->get('referral_user');
             }
             $stackMember->save();
         } else {
             $stackMember->fb_id = $userNode['id'];
             $stackMember->fb_accesstoken = $accessToken;
             $stackMember->save();
         }
         Event::fire(new StackMemberSignedUp($stackMember));
         return redirect('member/' . $stackMember->referral_token);
     } catch (Facebook\Exceptions\FacebookResponseException $e) {
         // When Graph returns an error
         return redirect()->back()->withInput()->withErrors($e->getMessage());
     } catch (Facebook\Exceptions\FacebookSDKException $e) {
         // When validation fails or other local issues
         return redirect()->back()->withInput()->withErrors($e->getMessage());
     } catch (Exeption $e) {
         return redirect()->back()->withInput()->withErrors($e);
     }
 }
コード例 #17
0
 /**
  * @Route("/logincallback")
  */
 public function loginCallbackAction()
 {
     $fb = new Facebook(['app_id' => '763157317118688', 'app_secret' => '41ed5213e2e9161f8f31bf77c5e5c9e3', 'default_graph_version' => 'v2.5']);
     $helper = $fb->getJavaScriptHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (FacebookSDKException $e) {
         // When Graph returns an error
         echo 'Graph returned an error: ' . $e->getMessage();
     } catch (FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
     }
     if (isset($accessToken)) {
         $fb->setDefaultAccessToken($accessToken);
         try {
             $requestProfile = $fb->get("/me?fields=id,name,email");
             $profile = $requestProfile->getGraphNode()->asArray();
         } catch (FacebookSDKException $e) {
             // When Graph returns an error
             echo 'Graph returned an error: ' . $e->getMessage();
         } catch (FacebookSDKException $e) {
             // When validation fails or other local issues
             echo 'Facebook SDK returned an error: ' . $e->getMessage();
         }
         $this->session->set('username', $profile['name']);
         $this->session->set('email', $profile['email']);
         if (!$this->checkFbIdExistinUserFor($profile['id'] . '_fb')) {
             $user = new User();
             $user->setUsername($profile['id'] . "_fb");
             $user->setHash($this->makeHash($profile['name'], $profile['email']));
             $user->setEmail($profile['email']);
             $user->setActivated(1);
             $user->setAvatarSrc($profile['id']);
             $user->setCreated(time());
             $em = $this->getDoctrine()->getManager();
             $em->persist($user);
             $em->flush();
         }
         $fb_user_id = $this->getUserResultFor($profile['id'] . "_fb")[0]['id'];
         $fb_username = $this->getUserResultFor($profile['id'] . "_fb")[0]['username'];
         $fb_created = $this->getUserResultFor($profile['id'] . "_fb")[0]['created'];
         $fb_avatar_src = $this->getUserResultFor($profile['id'] . "_fb")[0]['avatar_src'];
         $fb_email = $this->getUserResultFor($profile['id'] . "_fb")[0]['email'];
         $this->session->set('username', $fb_username);
         $this->session->set('fb_realm_name', $profile['name']);
         $this->session->set('user_id', $fb_user_id);
         $this->session->set('avatar_src', $fb_avatar_src);
         $this->session->set('email', $fb_email);
         $this->session->set('created', date('D M j G:i:s ', $fb_created));
         $this->session->set('fb_login', true);
         return $this->redirectToRoute('app_dashboard_account');
     } else {
         echo "Unauthorized access!!!";
         exit;
     }
 }
コード例 #18
0
 public function testAnAccessTokenCanBeSetAsAnAccessTokenEntity()
 {
     $fb = new Facebook($this->config);
     $fb->setDefaultAccessToken(new AccessToken('bar_token'));
     $accessToken = $fb->getDefaultAccessToken();
     $this->assertInstanceOf('Facebook\\Authentication\\AccessToken', $accessToken);
     $this->assertEquals('bar_token', (string) $accessToken);
 }
コード例 #19
0
ファイル: fbloginhandle.php プロジェクト: AfzalH/fb-api-test
<?php

require_once __DIR__ . '/vendor/autoload.php';
use Facebook\Facebook;
session_start();
$fb = new Facebook(['app_id' => '137232439715277', 'app_secret' => '8ff4bfcdf06ae146809cba0bb5c91080', 'default_graph_version' => 'v2.3']);
$loginHelper = $fb->getRedirectLoginHelper();
$token = $loginHelper->getAccessToken();
if ($token) {
    $_SESSION['fb_token'] = $token->getValue();
}
$fb->setDefaultAccessToken($_SESSION['fb_token']);
$resp = $fb->get('me/albums');
$details = $resp->getDecodedBody();
dump($details);
コード例 #20
0
ファイル: EFacebook.php プロジェクト: gilyaev/yii-fb
 /**
  * Init Facebook super-class object with applications settings
  */
 public function init()
 {
     parent::init();
     $this->fb = new \Facebook\Facebook(array('app_id' => $this->app_id, 'app_secret' => $this->app_secret));
     $this->fb->setDefaultAccessToken($this->fb->getApp()->getAccessToken());
 }
コード例 #21
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>';
     }
 }
コード例 #22
0
     $notifications += $assigns->count;
 } else {
     //echo "<td>0</td>";
 }
 if ($notifications == 0) {
     //echo "<td>No notifications found</td>";
 } else {
     // Check if there are notifications to send
     if ($user->facebookid != null && $notifications != 0) {
         if ($notifications == 1) {
             $template = "Tienes {$notifications} notificación de Webcursos.";
         } else {
             $template = "Tienes {$notifications} notificaciones de Webcursos.";
         }
         $data = array("link" => "", "message" => "", "template" => $template);
         $fb->setDefaultAccessToken($appid . '|' . $secretid);
         // Handles when the notifier throws an exception (couldn't send the notification)
         try {
             $response = $fb->post('/' . $user->facebookid . '/notifications', $data);
             $return = $response->getDecodedBody();
             echo "Send " . $notifications . " notification to " . $user->name . " - " . $user->email . " |  \n";
         } catch (Exception $e) {
             $exception = $e->getMessage();
             echo "Exception found: {$exception} \n";
             // If the user hasn't installed the app, update it's record to status = 0
             if (strpos($exception, "not installed") !== FALSE) {
                 $updatequery = "UPDATE {facebook_user} \n\t\t\t\t\t\t\t\tSET status = ? \n\t\t\t\t\t\t\t\tWHERE moodleid = ?";
                 $updateparams = array(0, $user->id);
                 if ($DB->execute($updatequery, $updateparams)) {
                     echo "Record updated, set status to 0. \n";
                 } else {
コード例 #23
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');
         }
     }
 }
コード例 #24
0
ファイル: User.php プロジェクト: lmkhang/mcntw
 /**
  * @author: lmkhang - skype
  * @date: 2015-12-28
  * Getting and Processing registration from FB API
  *
  */
 public function callback_facebook(Request $request)
 {
     //Check isLogged
     if ($this->isLogged()) {
         die;
     }
     //get Info of Dailymotion's API
     $fbook['api_key'] = \App\Config::where(['prefix' => 'fb', 'name' => 'api_key', 'del_flg' => 1])->get()[0]['value'];
     $fbook['api_secret'] = \App\Config::where(['prefix' => 'fb', 'name' => 'api_secret', 'del_flg' => 1])->get()[0]['value'];
     $fbook['scope'] = \App\Config::where(['prefix' => 'fb', 'name' => 'scope', 'del_flg' => 1])->get()[0]['value'];
     $fbook['url_callback'] = \App\Config::where(['prefix' => 'fb', 'name' => 'url_callback', 'del_flg' => 1])->get()[0]['value'];
     $fb = new Facebook(['app_id' => $fbook['api_key'], 'app_secret' => $fbook['api_secret'], 'default_graph_version' => 'v2.5']);
     $helper = $fb->getJavaScriptHelper();
     try {
         $accessToken = $helper->getAccessToken();
     } catch (FacebookResponseException $e) {
         // When Graph returns an error
         return Redirect::intended('/')->with('message', 'Hacking!!!!');
     } catch (FacebookSDKException $e) {
         // When validation fails or other local issues
         echo 'Facebook SDK returned an error: ' . $e->getMessage();
         exit;
     }
     if (!isset($accessToken)) {
         echo 'No cookie set or no OAuth data could be obtained from cookie.';
         exit;
     }
     // Logged in
     if ($accessToken) {
         //set Facebook Login SESSION
         $session = new \Symfony\Component\HttpFoundation\Session\Session();
         $session->set('fb_access_token', (string) $accessToken);
         //get Info of User
         $fb->setDefaultAccessToken((string) $accessToken);
         #These will fall back to the default access token
         try {
             $res = $fb->get('/me?fields=id,name,email,first_name,last_name');
         } catch (FacebookSDKException $e) {
             echo $e->getMessage();
         }
         $user_get = $res->getGraphObject();
         //Check existed account
         $registration_system = config('constant.registration');
         $user = $this->checkAccountSNS(['username' => $user_get->getField('id')], $registration_system['facebook']);
         if (!$user) {
             //insert
             $match = new Libraries\Math();
             $register['refer'] = $match->to_base(rand(10, 30) . substr(time(), 5, 10) . rand(10, 30), 62) . $match->to_base(rand(100, 300) . substr(time(), 5, 10) . rand(100, 300), 62) . $match->to_base(rand(100, 300) . substr(time(), 5, 10) . rand(100, 300), 62);
             //from_refer
             if ($this->hasFlash('refer')) {
                 $register['from_refer'] = $this->getFlash('refer');
             } else {
                 $register['from_refer'] = 'no_refer';
             }
             $message_refer = $this->checkUserAttributes($register);
             $user = new \App\User();
             $user->refer = $register['refer'];
             $user->from_refer = !$message_refer ? $register['from_refer'] : '';
             $user->username = $user_get->getField('id');
             $user->first_name = $user_get->getField('first_name');
             $user->last_name = $user_get->getField('last_name');
             $user->full_name = $user_get->getField('name');
             $user->email = '';
             //$user_get->getField('email');
             $user->del_flg = 1;
             $user->registration_system = $registration_system['facebook'];
             $user->save();
             //Insert User Stats
             $user_stats = new \App\UserStats();
             $user_stats->user_id = $user->user_id;
             $user_stats->total = 0;
             $user_stats->del_flg = $user->del_flg;
             $user_stats->save();
         }
         //Set Session
         $this->setLogSession(['email' => $user->email, 'user_id' => $user->user_id, 'registration_system' => $user->registration_system]);
         //set Flash Message
         $this->setFlash('message', 'Welcome to MCN!');
         return Redirect::intended('/')->with('message', 'Welcome to MCN!');
     }
     //set Flash Message
     $this->setFlash('message', 'Error!');
     return Redirect::intended('/')->with('message', 'Error!');
 }