/** * 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()); }