/** * * @example /profile/group-oauth/consume/provider2?oauth_token=request-token * * @param string $providerId * @return void */ public function consumeAction($providerId) { $this->setNoRender(); $providerConfig = $this->_getProviderConfiguration($providerId); $consumer = new Zend_Oauth_Consumer($providerConfig->auth); $queryParameters = $this->_getRequest()->getQueryParameters(); if (empty($queryParameters)) { throw new EngineBlock_Exception('Unable to consume access token, no query parameters given'); } if (!isset($_SESSION['request_token'][$providerId])) { throw new EngineBlock_Exception("Unable to consume access token, no request token (session lost?)"); } $requestToken = unserialize($_SESSION['request_token'][$providerId]); $token = $consumer->getAccessToken($queryParameters, $requestToken); $userId = $this->attributes['nameid'][0]; $provider = EngineBlock_Group_Provider_OpenSocial_Oauth_ThreeLegged::createFromConfigs($providerConfig, $userId); $provider->setAccessToken($token); if (!$provider->validatePreconditions()) { EngineBlock_ApplicationSingleton::getLog()->err("Unable to test OpenSocial 3-legged Oauth provider because not all preconditions have been matched?", new EngineBlock_Log_Message_AdditionalInfo($userId, null, null, null)); $this->providerId = $providerId; $this->renderAction("Error"); } else { // Now that we have an Access Token, we can discard the Request Token $_SESSION['request_token'][$providerId] = null; $this->_redirectToUrl($_SESSION['return_url']); } }
public function validate() { return (bool) $this->_provider->getOpenSocialRestClient()->getHttpClient()->getToken()->getToken(); }