Пример #1
0
 public function testGetHttpClientResetsAuthorizationHeader()
 {
     $client = new HTTPClient19485876();
     $client->setHeaders(array('Authorization' => 'realm="http://www.example.com",oauth_version="1.0"'));
     OAuth::setHttpClient($client);
     $resetClient = OAuth::getHttpClient();
     $this->assertEquals(null, $resetClient->getHeader('Authorization'));
 }
Пример #2
0
 /**
  * Generate and return a HTTP Client configured for the POST Body Request
  * Scheme specified by OAuth, for use in requesting an Access Token.
  *
  * @param  array $params
  * @return Zend\Http\Client
  */
 public function getRequestSchemePostBodyClient(array $params)
 {
     $params = $this->_cleanParamsOfIllegalCustomParameters($params);
     $client = OAuth::getHttpClient();
     $client->setUri($this->_consumer->getAccessTokenUrl());
     $client->setMethod($this->_preferredRequestMethod);
     $client->setRawBody($this->_httpUtility->toEncodedQueryString($params));
     return $client;
 }
Пример #3
0
 public function twitterAction()
 {
     $config = array('callbackUrl' => 'http://cursozf2.local', 'consumerKey' => '6m5PRdgc8L34OHt0jl7XQ', 'consumerSecret' => 'MbrgvIa7AQRCkNaHToKGdyIfuBPlhUVKKN2fo7k', 'siteUrl' => 'https://api.twitter.com/oauth', 'authorizeUrl' => 'https://api.twitter.com/oauth/authenticate', 'requestTokenUrl' => 'https://api.twitter.com/oauth/request_token', 'accessTokenUrl' => 'https://api.twitter.com/oauth/access_token');
     $httpConfig = array('adapter' => 'Zend\\Http\\Client\\Adapter\\Socket', 'sslverifypeer' => false);
     $httpClient = new HTTPClient(null, $httpConfig);
     OAuth::setHttpClient($httpClient);
     $consumer = new Consumer($config);
     $token = null;
     if (!$token) {
         $token = $consumer->getRequestToken();
         $_SESSION['TWITTER_REQUEST_TOKEN'] = serialize($token);
         $consumer->redirect();
     }
 }
Пример #4
0
 /**
  * @return \Zend\Http\Response
  */
 public function twitterCallbackAction()
 {
     $config = $this->getServiceLocator()->get('config')['twitter'];
     $config['callbackUrl'] = $this->url()->fromRoute('user/default', ['controller' => 'auth', 'action' => 'twitter-callback'], ['force_canonical' => true]);
     OAuth::setHttpClient(new Client(null, $config['httpClientOptions']));
     $consumer = new Consumer($config);
     $container = new Container('twitter');
     if ($this->getRequest()->isGet() && $this->params()->fromQuery() && isset($container->requestToken)) {
         $token = $consumer->getAccessToken($this->params()->fromQuery(), unserialize($container->requestToken));
         /**
          * @var \Doctrine\ORM\EntityManager $objectManager
          */
         $objectManager = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
         /**
          * @var \User\Entity\Auth $auth
          */
         $auth = $objectManager->getRepository('User\\Entity\\Auth')->getAuthRow(Auth::PROVIDER_TWITTER, $token->user_id);
         if ($auth) {
             $user = $auth->getUser();
             if (!$user->isActive()) {
                 $this->flashMessenger()->addSuccessMessage("User is not active");
                 return $this->redirect()->toRoute('home');
             }
             $auth->setToken($token->oauth_token);
             $auth->setTokenSecret($token->oauth_token_secret);
             $auth->setTokenType(Auth::TYPE_ACCESS);
             $message = "You have successfully logged in via twitter";
         } else {
             //if there is no user with provided twitter id and user is not logged in
             if (!$this->identity()) {
                 //create new user
                 /**
                  * @var \User\Entity\User $user
                  */
                 $user = $user = new \User\Entity\User();
                 //todo: need to be checked for unique
                 $user->setDisplayName($token->screen_name);
                 $user->setRole($user::ROLE_USER);
                 $user->activate();
                 $objectManager->persist($user);
                 $objectManager->flush();
             } else {
                 //get current authorized user
                 $user = $this->identity()->getUser();
             }
             $auth = new \User\Entity\Auth();
             $auth->setToken($token->oauth_token);
             $auth->setTokenSecret($token->oauth_token_secret);
             $auth->setForeignKey($token->user_id);
             $auth->setProvider(Auth::PROVIDER_TWITTER);
             $auth->setTokenType(Auth::TYPE_ACCESS);
             $auth->setUserId($user->getId());
             $user->getAuths()->add($auth);
             $auth->setUser($user);
             $message = "You've successfully registered via twitter";
         }
         $objectManager->persist($user);
         $objectManager->persist($auth);
         $objectManager->flush();
         $auth->login($this->getServiceLocator());
         // Now that we have an Access Token, we can discard the Request Token
         $container->requestToken = null;
         $this->flashMessenger()->addSuccessMessage($message);
         $session = new Container('location');
         $location = $session->location;
         if ($location) {
             $session->getManager()->getStorage()->clear('location');
             return $this->redirect()->toUrl($location);
         }
         return $this->redirect()->toRoute('home');
     } else {
         $this->flashMessenger()->addErrorMessage("Invalid callback request. Oops. Sorry.");
         return $this->redirect()->toRoute('home');
     }
 }
Пример #5
0
 public function teardown()
 {
     OAuth::clearHttpClient();
 }
Пример #6
0
 /**
  * Generate and return a HTTP Client configured for the POST Body Request
  * Scheme specified by OAuth, for use in requesting a Request Token.
  *
  * @param  array $params
  * @return Http\Client
  */
 public function getRequestSchemePostBodyClient(array $params)
 {
     $client = OAuth::getHttpClient();
     $client->setUri($this->_consumer->getRequestTokenUrl());
     $client->setMethod($this->_preferredRequestMethod);
     $request = $client->getRequest();
     $request->setContent($this->_httpUtility->toEncodedQueryString($params));
     $request->getHeaders()->addHeaderLine('Content-Type', Http\Client::ENC_URLENCODED);
     return $client;
 }