* @license http://www.horde.org/licenses/bsd BSD * @category Horde * @package Oauth */ /** * OAuth consumer class * * @author Chuck Hagenbuch * @license http://www.horde.org/licenses/bsd BSD * @category Horde * @package Oauth */ class Horde_Oauth_Consumer { protected $_config; /** * Const'r for consumer. * * @param array $config Configuration values: *
     *    'key'               - Consumer key
     *    'secret'            - Consumer secret
     *    'requestTokenUrl'   - The request token URL
     *    'authorizeTokenUrl' - The authorize URL
     *    'accessTokenUrl'    = To obtain an access token
     *    'signatureMethod    - Horde_Oauth_SignatureMethod object
     *  
* * @return Horde_Oauth_Consumer */ public function __construct($config) { // Check for required config if (!is_array($config) || empty($config['key']) || empty($config['secret']) || empty($config['requestTokenUrl']) || empty($config['authorizeTokenUrl']) || empty($config['signatureMethod'])) { throw new InvalidArgumentException('Missing a required parameter in Horde_Oauth_Consumer::__construct'); } $this->_config = $config; } public function __get($name) { return isset($this->_config[$name]) ? $this->_config[$name] : null; } /** * Obtain an unprivileged request token * * @param array $params Parameter array * * @return Horde_Oauth_Token The oauth request token */ public function getRequestToken($params = array()) { $params['oauth_consumer_key'] = $this->key; $params['oauth_callback'] = $this->callbackUrl; $request = new Horde_Oauth_Request($this->requestTokenUrl, $params); $request->sign($this->signatureMethod, $this); $client = new Horde_Http_Client; try { $response = $client->post( $this->requestTokenUrl, $request->buildHttpQuery() ); } catch (Horde_Http_Exception $e) { throw new Horde_Oauth_Exception($e->getMessage()); } return Horde_Oauth_Token::fromString($response->getBody()); } /** * Get the user authorization url used to request user authorization * * @param Horde_Oauth_Token $token the oauth request token * * @return string The user authorization url string */ public function getUserAuthorizationUrl($token) { return $this->authorizeTokenUrl . '?oauth_token=' . urlencode($token->key) . '&oauth_callback=' . urlencode($this->callbackUrl); } /** * Obtain an access token from a request token * * @param Horde_Oauth_Token $token Open auth token containing the oauth_token * returned from provider after authorization * and the token secret returned with the * original request token. * @param array $params Any additional parameters for this request * * @return unknown_type */ public function getAccessToken($token, $params = array()) { $params['oauth_consumer_key'] = $this->key; $params['oauth_token'] = $token->key; $request = new Horde_Oauth_Request($this->accessTokenUrl, $params); $request->sign($this->signatureMethod, $this, $token); $client = new Horde_Http_Client; try { $response = $client->post( $this->accessTokenUrl, $request->buildHttpQuery() ); } catch (Horde_Http_Exception $e) { throw new Horde_Oauth_Exception($e->getMessage()); } return Horde_Oauth_Token::fromString($response->getBody()); } }