1: <?php
2: /**
3: * Horde_Service_Twitter_Auth class to abstract all auth related tasks
4: *
5: * Basically implements Horde_Oauth_Client and passes the calls along to the
6: * protected oauth object.
7: *
8: * Copyright 2009-2012 Horde LLC (http://www.horde.org/)
9: *
10: * @author Michael J. Rubinsky <mrubinsk@horde.org>
11: * @license http://www.horde.org/licenses/bsd BSD
12: * @category Horde
13: * @package Service_Twitter
14: */
15: class Horde_Service_Twitter_Auth_Oauth extends Horde_Service_Twitter_Auth
16: {
17: /**
18: *
19: * @var Horde_OAuth_Token
20: */
21: protected $_token;
22:
23: public function __construct(Horde_OAuth_Consumer $oauth)
24: {
25: $this->_config['oauth'] = $oauth;
26: }
27:
28: /**
29: * Obtain the URL used to get an authorization token.
30: *
31: * @param Horde_Oauth_Token $requestToken The request token
32: *
33: * @return string The Url
34: */
35: public function getUserAuthorizationUrl($requestToken)
36: {
37: return $this->oauth->getUserAuthorizationUrl($requestToken);
38: }
39:
40: /**
41: * Set the access token
42: *
43: * @param Horde_OAuth_Token $token
44: */
45: public function setToken(Horde_OAuth_Token $token)
46: {
47: $this->_token = $token;
48: }
49:
50: /**
51: * Obtain the access token. This is the token that should be persisted to
52: * storage.
53: *
54: * @param Horde_Controller_Request_Http Http request object
55: * @param string $requestSecret The token secret returned by
56: * Twitter after the user authorizes
57: * the application.
58: * @return Horde_Oauth_Token
59: * @throws Horde_Service_Twitter_Exception
60: */
61: public function getAccessToken(Horde_Controller_Request_Http $request, $requestSecret = null)
62: {
63: if (!empty($this->_token)) {
64: return $this->_token;
65: }
66:
67: $params = $request->getGetVars();
68: if (empty($params['oauth_token'])) {
69: return false;
70: }
71: $token = new Horde_Oauth_Token($params['oauth_token'], $requestSecret);
72: try {
73: return $this->oauth->getAccessToken($token);
74: } catch (Horde_Oauth_Exception $e) {
75: throw new Horde_Service_Twitter_Exception($e->getMessage());
76: }
77: }
78:
79: /**
80: * Obtain the OAuth request token
81: *
82: * @param array $params
83: *
84: * @return Horde_OAuth_Token The request token
85: * @throws Horde_Service_Twitter_Exception
86: */
87: public function getRequestToken($params = array())
88: {
89: try {
90: return $this->oauth->getRequestToken($params);
91: } catch (Horde_Oauth_Exception $e) {
92: throw new Horde_Service_Twitter_Exception($e->getMessage());
93: }
94: }
95:
96: }
97: