Пример #1
0
 /**
  * Authenticate the user
  * 
  * @return Zend_Auth_Result
  */
 public function authenticate()
 {
     if (!$this->_consumer) {
         $code = AuthenticationResult::FAILURE;
         $message = array('A valid Zend\\Oauth\\Consumer key is required');
         return new AuthenticationResult($code, '', $message);
     }
     $sessionContainer = self::DEFAULT_SESSION_CONTAINER;
     if (isset($this->_options['sessionContainer']) && $this->_options['sessionContainer'] != '') {
         $sessionContainer = $this->_options['sessionContainer'];
     }
     $session = new SessionContainer($sessionContainer);
     try {
         if (!$session->requestToken) {
             $token = $this->_consumer->getRequestToken();
             $session->requestToken = serialize($token);
             $this->_consumer->redirect();
         } else {
             $accessToken = $this->_consumer->getAccessToken($this->_queryData, unserialize($session->requestToken));
             $this->setAccessToken($accessToken);
             unset($session->requestToken);
             $body = $accessToken->getResponse()->getBody();
             $returnParams = array();
             $parts = explode('&', $body);
             foreach ($parts as $kvpair) {
                 $pair = explode('=', $kvpair);
                 $returnParams[rawurldecode($pair[0])] = rawurldecode($pair[1]);
             }
         }
     } catch (Zend\Oauth\Exception $e) {
         $session->unsetAll();
         $code = AuthenticationResult::FAILURE;
         $message = array('Access denied by OAuth source');
         return new AuthenticationResult($code, '', $message);
     } catch (Exception $e) {
         $session->unsetAll();
         $code = AuthenticationResult::FAILURE;
         $message = array($e->getMessage());
         return new AuthenticationResult($code, '', $message);
     }
     return new AuthenticationResult(AuthenticationResult::SUCCESS, $returnParams, array());
 }