public function testGetRedirectUrlReturnsUserAuthorizationUrlWithParameters() { $config = array('consumerKey' => '12345', 'consumerSecret' => '54321', 'userAuthorizationUrl' => 'http://www.example.com/authorize'); $consumer = new Test_Consumer_48231($config); $params = array('foo' => 'bar'); $uauth = new Zend_Oauth_Http_UserAuthorization($consumer, $params); $token = new Zend_Oauth_Token_Request(); $token->setParams(array('oauth_token' => '123456', 'oauth_token_secret' => '654321')); $redirectUrl = $consumer->getRedirectUrl($params, $token, $uauth); $this->assertEquals('http://www.example.com/authorize?oauth_token=123456&oauth_callback=http%3A%2F%2Fwww.example.com%2Flocal&foo=bar', $redirectUrl); }
/** * This is the action to which Twitter redirects once the user has authorized * conjoon to use a specific Twitter account. * Necessary configuration will be stored in the session. The Session parameters * oauthToken and oauthTokenSecret must be available. */ public function authorizeOkayAction() { $this->view->title = "conjoon - Twitter Account Authorization"; /** * @see Zend_Session_Namespace */ require_once 'Zend/Session/Namespace.php'; /** * @see Conjoon_Keys */ require_once 'Conjoon/Keys.php'; $sessionOauth = new Zend_Session_Namespace(Conjoon_Keys::SESSION_SERVICE_TWITTER_OAUTH); if (!isset($sessionOauth->oauthToken) || !isset($sessionOauth->oauthTokenSecret)) { die("invalid data."); } /** * @see Zend_Oauth_Consumer */ require_once 'Zend/Oauth/Consumer.php'; $config = Zend_Registry::get(Conjoon_Keys::REGISTRY_CONFIG_OBJECT); /** * @see Conjoon_Modules_Default_Registry_Facade */ require_once 'Conjoon/Modules/Default/Registry/Facade.php'; $registry = Conjoon_Modules_Default_Registry_Facade::getInstance(); $userId = $this->_helper->registryAccess()->getUserId(); $port = $registry->getValueForKeyAndUserId('/server/environment/port', $userId); $protocol = $registry->getValueForKeyAndUserId('/server/environment/protocol', $userId); $host = $registry->getValueForKeyAndUserId('/server/environment/host', $userId); /** * @see Conjoon_Service_Twitter_AccountService */ require_once 'Conjoon/Service/Twitter/AccountService.php'; $accountService = new Conjoon_Service_Twitter_AccountService(); $callbackUrl = $accountService->getOauthCallbackUrl(array('port' => $port, 'protocol' => $protocol, 'host' => $host, 'baseUrl' => $config->environment->base_url, 'oauthCallbackUrl' => $config->application->twitter->oauth->callbackUrl)); $siteUrl = $config->application->twitter->oauth->siteUrl; $consumerKey = $config->application->twitter->oauth->consumerKey; $consumerSecret = $config->application->twitter->oauth->consumerSecret; $options = array('callbackUrl' => $callbackUrl, 'siteUrl' => $siteUrl, 'consumerKey' => $consumerKey, 'consumerSecret' => $consumerSecret); $consumer = new Zend_Oauth_Consumer($options); require_once 'Zend/Oauth/Token/Request.php'; $requestToken = new Zend_Oauth_Token_Request(); $requestToken->setParams(array('oauth_token' => $sessionOauth->oauthToken, 'oauth_token_secret' => $sessionOauth->oauthTokenSecret)); $accessToken = $consumer->getAccessToken($_GET, $requestToken); require_once 'Zend/Oauth/Token/Access.php'; $screenName = $accessToken->getParam('screen_name'); $userId = $accessToken->getParam('user_id'); $oauthToken = $accessToken->getParam('oauth_token'); $oauthTokenSecret = $accessToken->getParam('oauth_token_secret'); require_once 'Conjoon/Service/Twitter/Proxy.php'; /** * @see Conjoon_Modules_Default_Registry_Facade */ require_once 'Conjoon/Modules/Default/Registry/Facade.php'; $protocolContext = Conjoon_Modules_Default_Registry_Facade::getInstance()->getValueForKeyAndUserId('/server/environment/protocol', $this->_helper->registryAccess()->getUserId()); $twitter = new Conjoon_Service_Twitter_Proxy(array('screen_name' => $screenName, 'user_id' => $userId, 'oauth_token' => $oauthToken, 'oauth_token_secret' => $oauthTokenSecret, 'consumer_key' => $consumerKey, 'consumer_secret' => $consumerSecret, 'protocol_context' => $protocolContext)); $dto = $twitter->accountVerifyCredentials(); if ($dto instanceof Conjoon_Error) { $this->view->success = false; $this->view->error = $dto->getDto(); $this->view->connectionFailure = true; return; } /** * @ticket CN-675 * We could possibly remove this due to CN-676, but decided to leave it * in here to double check... doesn't hurt */ if ($dto->twitterId != $userId) { throw new RuntimeException("userId does not equal to user id from Twitter API Service"); } unset($sessionOauth->oauthToken); unset($sessionOauth->oauthTokenSecret); $dto->oauthToken = $oauthToken; $dto->oauthTokenSecret = $oauthTokenSecret; $this->view->success = true; $this->view->account = $dto; }