Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 public function getUser() : User
 {
     $code = self::request()->getQuery('code');
     $state = self::request()->getQuery('state');
     if (!$code) {
         throw new \LogicException('No code found on oauth route end');
     }
     // This was a callback request from facebook, get the token
     $token = $this->service->requestAccessToken($code, $state);
     // Send a request with it
     $result = json_decode($this->service->request('/me?fields=id,name,birthday,verified,first_name,last_name,email,locale'), true);
     $gender = $this->pop($result, 'gender');
     $birthday = $this->pop($result, 'birthday');
     if ($birthday) {
         $explode = explode('/', $birthday);
         if (sizeof($explode) == 3) {
             $birthday = new Date($explode[2] . '-' . $explode[0] . '-' . $explode[1]);
         } elseif (sizeof($explode) == 2) {
             $birthday = new Date('0000-' . $explode[0] . '-' . $explode[1]);
         } else {
             $birthday = new Date($explode[0] . '-00-00');
         }
     }
     $user = new User($this->getType());
     $user->setUid($this->pop($result, 'id'))->setEmail($this->pop($result, 'email'))->setVerified($this->pop($result, 'verified'))->setFirstName($this->pop($result, 'first_name'))->setLastName($this->pop($result, 'last_name'))->setLocale(substr($this->pop($result, 'locale'), 0, 2))->setGender($gender == 'male' ? User::GENDER_MALE : ($gender == 'female' ? User::GENDER_FEMALE : null))->setBirthday($birthday)->setExtraData($result);
     return $user;
 }
Exemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 public function getAttributes($code = null)
 {
     if (!isset($code)) {
         $code = Request::get('code');
     }
     if (empty($code)) {
         return [];
     }
     // This was a callback request from google, get the token
     $this->service->requestAccessToken($code);
     // Send a request with it
     try {
         return Json::decode($this->service->request($this->apiUrl));
     } catch (JsonException $e) {
         if (class_exists('\\rock\\log\\Log')) {
             Log::err(BaseException::convertExceptionToString($e));
         }
     }
     return [];
 }
Exemplo n.º 3
0
 /**
  * @covers OAuth\OAuth2\Service\Facebook::__construct
  * @covers OAuth\OAuth2\Service\Facebook::parseAccessTokenResponse
  */
 public function testParseAccessTokenResponseValidWithRefreshToken()
 {
     $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
     $client->expects($this->once())->method('retrieveResponse')->will($this->returnValue('access_token=foo&expires=bar&refresh_token=baz'));
     $service = new Facebook($this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface'), $client, $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface'));
     $this->assertInstanceOf('\\OAuth\\OAuth2\\Token\\StdOAuth2Token', $service->requestAccessToken('foo'));
 }
 /**
  * Request access token from Facebook and return a LoginRequest object for logging into our app
  *
  * @param  Oauth2Service\Facebook $facebook
  * @param  TokenInterface         $token
  * @return LoginRequest
  */
 protected function facebook(Oauth2Service\Facebook $facebook, TokenInterface $token)
 {
     $user = json_decode($facebook->request('/me'), true);
     $loginRequest = new LoginRequest('facebook', $user['id'], $token->getAccessToken(), $token->getEndOfLife() > 0 ? $token->getEndOfLife() : 0, $token->getRefreshToken(), [$user['email']]);
     return $loginRequest;
 }
Exemplo n.º 5
0
 /**
  * @covers OAuth\OAuth2\Service\Facebook::__construct
  * @covers OAuth\OAuth2\Service\Facebook::getDialogUri
  */
 public function testGetDialogUriContainsAppIdAndOtherParameters()
 {
     $client = $this->getMock('\\OAuth\\Common\\Http\\Client\\ClientInterface');
     $credentials = $this->getMock('\\OAuth\\Common\\Consumer\\CredentialsInterface');
     $credentials->expects($this->any())->method('getConsumerId')->will($this->returnValue('application_id'));
     $service = new Facebook($credentials, $client, $this->getMock('\\OAuth\\Common\\Storage\\TokenStorageInterface'));
     $dialogUri = $service->getDialogUri('feed', array('redirect_uri' => 'http://www.facebook.com', 'state' => 'Random state'));
     $queryString = $dialogUri->getQuery();
     parse_str($queryString, $queryArray);
     $this->assertArrayHasKey('app_id', $queryArray);
     $this->assertArrayHasKey('redirect_uri', $queryArray);
     $this->assertArrayHasKey('state', $queryArray);
 }