Exemple #1
1
 public function authorize()
 {
     try {
         $this->accessToken = $this->helper->getAccessToken();
     } catch (FacebookResponseException $e) {
         // When Graph returns an error
         throw new FacebookAuthenticationException('Graph returned an error: ' . $e->getMessage());
     } catch (FacebookSDKException $e) {
         // When validation fails or other local issues
         throw new FacebookAuthenticationException('Facebook SDK returned an error: ' . $e->getMessage());
     }
     if (!$this->accessToken) {
         throw new FacebookAuthenticationException('Access token not received. ' . $this->helper->getError(), $this->helper->getErrorCode());
     }
     try {
         // Returns a `Facebook\FacebookResponse` object
         $response = $this->facebook->get('/me?fields=id,name', $this->accessToken);
     } catch (FacebookResponseException $e) {
         throw new FacebookAuthenticationException('Graph returned an error: ' . $e->getMessage());
     } catch (FacebookSDKException $e) {
         throw new FacebookAuthenticationException('Facebook SDK returned an error: ' . $e->getMessage());
     }
     $fbUser = $response->getGraphUser();
     if (!($user = $this->doctrine->getRepository('QuizBundle:User')->findOneBySocialId($fbUser['id']))) {
         $user = (new Entity\User())->setAccessToken($this->accessToken)->setSocialType(Entity\User::FACEBOOK)->setSocialId($fbUser['id'])->setName($fbUser['name']);
         $manager = $this->doctrine->getManager();
         $manager->persist($user);
         $manager->flush();
     }
     $token = new SocialToken($user, $this->accessToken, 'facebook', [$this->adminId == $fbUser['id'] ? 'ROLE_ADMIN' : 'ROLE_USER']);
     $this->tokenStorage->setToken($token);
 }
Exemple #2
1
 public function redirect()
 {
     $facebookClient = new FacebookClient();
     $helper = new FacebookRedirectLoginHelper($this->facebookApp);
     $permissions = ['email', 'user_likes'];
     // optional
     $loginUrl = $helper->getLoginUrl('http://www.schoolmanager.or.ke/login', $permissions);
     header('Location: ' . $loginUrl);
     //echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
 }
 /**
  * @dataProvider provideUris
  */
 public function testGetFilterdUriRemoveFacebookQueryParams($uri, $expected)
 {
     $helper = new FacebookRedirectLoginHelper(FacebookTestCredentials::$appId, FacebookTestCredentials::$appSecret);
     $helper->disableSessionStatusCheck();
     $class = new \ReflectionClass('Facebook\\Helpers\\FacebookRedirectLoginHelper');
     $method = $class->getMethod('getFilteredUri');
     $method->setAccessible(true);
     $currentUri = $method->invoke($helper, $uri);
     $this->assertEquals($expected, $currentUri);
 }
 public function testAnAccessTokenCanBeObtainedFromRedirect()
 {
     $this->persistentDataHandler->set('state', 'foo_state');
     $_GET['state'] = 'foo_state';
     $_GET['code'] = 'foo_code';
     $response = m::mock('Facebook\\Entities\\FacebookResponse');
     $response->shouldReceive('getDecodedBody')->once()->andReturn(['access_token' => 'access_token_from_code', 'expires' => 555]);
     $client = m::mock('Facebook\\FacebookClient');
     $client->shouldReceive('sendRequest')->with(m::type('Facebook\\Entities\\FacebookRequest'))->once()->andReturn($response);
     $app = new FacebookApp('123', 'foo_app_secret');
     $helper = new FacebookRedirectLoginHelper($app, $this->persistentDataHandler);
     $accessToken = $helper->getAccessToken($client, self::REDIRECT_URL);
     $this->assertInstanceOf('Facebook\\Entities\\AccessToken', $accessToken);
     $this->assertEquals('access_token_from_code', (string) $accessToken);
 }
 private function getAccessToken($time = 'short')
 {
     switch ($time) {
         case 'short':
             $accessToken = $this->helper->getAccessToken();
             break;
         case 'long':
             $accessToken = $this->getClient()->getLongLivedAccessToken($this->helper->getAccessToken());
             break;
         default:
             $accessToken = null;
             break;
     }
     return $accessToken;
 }
Exemple #6
0
 public function fblogin()
 {
     $this->autoRender = false;
     if (session_status() == PHP_SESSION_NONE) {
         session_start();
     }
     FacebookSession::setDefaultApplication('491776471001011', '2383aae6c102275bafd2ff7f118d988f');
     $helper = new FacebookRedirectLoginHelper('http://localhost/cakephp3/users/fb_login');
     $url = $helper->getLoginUrl('http://localhost/cakephp3/users/fb_login', array('email'));
     $this->redirect($url);
 }
 public function getLoginSession($redirectUrl)
 {
     $helper = new FacebookRedirectLoginHelper($redirectUrl);
     $this->setSession($helper->getSessionFromRedirect());
     return $this->getSession();
 }