From 224cefb4a056473ff6e5fa6299c9eb1947619487 Mon Sep 17 00:00:00 2001 From: Ross Tweedie Date: Sun, 14 Oct 2012 15:00:44 +0100 Subject: [PATCH 1/4] Allow the request params to be null when initialising the connection --- classes/twitter/connection.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/classes/twitter/connection.php b/classes/twitter/connection.php index 1c3493b..628c6d2 100755 --- a/classes/twitter/connection.php +++ b/classes/twitter/connection.php @@ -63,8 +63,9 @@ protected function init_connection($url) */ public function get($url, $params) { - - $this->init_connection($url.'?'.http_build_query($params['request'],'','&')); + $request = isset( $params['request'] )? http_build_query($params['request'],'','&') : null; + + $this->init_connection($url.'?'. $request ); $response = $this->add_curl($url, $params); return $response; From 6e4e62525b673f08a733b8e1d6437373434ec028 Mon Sep 17 00:00:00 2001 From: Ross Tweedie Date: Sun, 14 Oct 2012 15:02:38 +0100 Subject: [PATCH 2/4] Allow the request params to be null when initialising the connection --- classes/twitter/connection.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/classes/twitter/connection.php b/classes/twitter/connection.php index 628c6d2..2090e2e 100755 --- a/classes/twitter/connection.php +++ b/classes/twitter/connection.php @@ -63,9 +63,9 @@ protected function init_connection($url) */ public function get($url, $params) { - $request = isset( $params['request'] )? http_build_query($params['request'],'','&') : null; + $request = isset( $params['request'] )? http_build_query($params['request'], '', '&') : null; - $this->init_connection($url.'?'. $request ); + $this->init_connection($url.'?'.$request ); $response = $this->add_curl($url, $params); return $response; From 4540d280fbaf5b7236d4316e7c01a34c2f3e7aa3 Mon Sep 17 00:00:00 2001 From: Ross Tweedie Date: Sun, 7 Apr 2013 22:01:26 +0100 Subject: [PATCH 3/4] Update the Twitter authentication to verion 1.1 --- classes/twitter/oauth.php | 67 ++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 11 deletions(-) diff --git a/classes/twitter/oauth.php b/classes/twitter/oauth.php index f389067..83bcc78 100755 --- a/classes/twitter/oauth.php +++ b/classes/twitter/oauth.php @@ -19,8 +19,8 @@ class Twitter_Oauth { protected $request_token_url = 'http://api.twitter.com/oauth/request_token'; protected $access_token_url = 'http://api.twitter.com/oauth/access_token'; protected $signature_method = 'HMAC-SHA1'; - protected $version = '1.0'; - protected $api_url = 'http://api.twitter.com/1'; + protected $version = '1.1'; + protected $api_url = 'http://api.twitter.com/1.1'; protected $search_url = 'http://search.twitter.com/'; protected $callback = null; protected $errors = array(); @@ -159,13 +159,18 @@ public function logged_in() */ protected function check_login() { + if (isset($_GET['oauth_token'])) { - $this->set_access_key($_GET['oauth_token']); - $token = $this->get_access_token(); - + if ( isset( $_GET['oauth_verifier'] ) && !empty( $_GET['oauth_verifier'] ) ){ + $this->set_access_verifier( $_GET['oauth_verifier'] ); + } + + $this->set_access_key($_GET['oauth_token'] ); + + $token = $this->get_access_token(); $token = $token->_result; - + $token = (is_bool($token)) ? $token : (object) $token; if ( ! empty($token->oauth_token) && ! empty($token->oauth_token_secret)) @@ -187,7 +192,7 @@ protected function check_login() public function login() { if (($this->get_access_key() === null || $this->get_access_secret() === null)) - { + { \Response::redirect($this->get_auth_url()); return; } @@ -246,6 +251,19 @@ public function get_access_key() $tokens = \Session::get('twitter_oauthtokens'); return ($tokens === null || ! isset($tokens['access_key']) || empty($tokens['access_key'])) ? null : $tokens['access_key']; } + + /** + * Gets the Access Key Verifier from the Session. + * + * @return string|null The Access Key + */ + public function get_access_verifier() + { + $tokens = \Session::get('twitter_oauthtokens'); + + return ($tokens === null || ! isset($tokens['access_verifier']) || empty($tokens['access_verifier'])) ? null : $tokens['access_verifier']; + } + /** * Gets the Access Secret from the Session. @@ -257,6 +275,7 @@ public function get_access_secret() $tokens = \Session::get('twitter_oauthtokens'); return ($tokens === false || ! isset($tokens['access_secret']) || empty($tokens['access_secret'])) ? null : $tokens['access_secret']; } + /** * Sets the access key in the session @@ -264,11 +283,11 @@ public function get_access_secret() * @param string $access_key The access key * @return $this */ - public function set_access_key($access_key) + public function set_access_key( $access_key ) { $tokens = \Session::get('twitter_oauthtokens'); - if ($tokens === false || ! is_array($tokens)) + if ($tokens === false || ! is_array($tokens)) { $tokens = array('access_key' => $access_key); } @@ -282,6 +301,31 @@ public function set_access_key($access_key) return $this; } + + /** + * Sets the access key verifier in the session + * + * @param string $access_key The access key + * @return $this + */ + public function set_access_verifier( $verifier ) + { + $tokens = \Session::get('twitter_oauthtokens'); + + if ($tokens === false || ! is_array($tokens)) + { + $tokens = array('access_verifier' => $verifier); + } + else + { + $tokens['access_verifier'] = $verifier; + } + + \Session::set('twitter_oauthtokens', $tokens); + + return $this; + } + /** * Sets the access secret in the session * @@ -339,7 +383,7 @@ public function get_auth_url() * @return string The request token */ protected function get_request_token() - { + { return $this->http_request('GET', $this->request_token_url); } @@ -350,9 +394,10 @@ protected function get_request_token() */ protected function get_access_token() { - return $this->http_request('GET', $this->access_token_url); + return $this->http_request('GET', $this->access_token_url, array( 'oauth_verifier' => $this->get_access_verifier() ) ); } + /** * Sends the request to Twitter and returns the response. * From 2949cc72fc8f3a0b10d23fc601f3a7c421737976 Mon Sep 17 00:00:00 2001 From: Ross Tweedie Date: Sun, 7 Apr 2013 23:43:09 +0100 Subject: [PATCH 4/4] Update the Twitter authentication to verion 1.1 --- classes/twitter/oauth.php | 64 ++++++++++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 14 deletions(-) diff --git a/classes/twitter/oauth.php b/classes/twitter/oauth.php index 83bcc78..7698359 100755 --- a/classes/twitter/oauth.php +++ b/classes/twitter/oauth.php @@ -19,12 +19,12 @@ class Twitter_Oauth { protected $request_token_url = 'http://api.twitter.com/oauth/request_token'; protected $access_token_url = 'http://api.twitter.com/oauth/access_token'; protected $signature_method = 'HMAC-SHA1'; - protected $version = '1.1'; + protected $version = '1.0'; protected $api_url = 'http://api.twitter.com/1.1'; - protected $search_url = 'http://search.twitter.com/'; + protected $search_url = 'https://search.twitter.com/'; protected $callback = null; protected $errors = array(); - protected $enable_debug = false; + protected $enable_debug = true; /** * Loads in the Twitter config and sets everything up. @@ -140,7 +140,7 @@ public function logged_in() { $access_key = $this->get_access_key(); $access_secret = $this->get_access_secret(); - + $logged_in = false; if ($this->get_access_key() !== null && $this->get_access_secret() !== null) @@ -166,19 +166,28 @@ protected function check_login() $this->set_access_verifier( $_GET['oauth_verifier'] ); } - $this->set_access_key($_GET['oauth_token'] ); - $token = $this->get_access_token(); - $token = $token->_result; + $this->set_access_key( $_GET['oauth_token'] ); + + $token = $this->get_access_token(); + + if ( is_array( $token ) && isset( $token['error'] ) && !empty( $token['error']) ){ + \Session::delete('twitter_oauthtokens'); + return $token; + } + + $token = $token->_result; $token = (is_bool($token)) ? $token : (object) $token; - + if ( ! empty($token->oauth_token) && ! empty($token->oauth_token_secret)) { $this->set_access_key($token->oauth_token); $this->set_access_secret($token->oauth_token_secret); + + $this->unset_access_verifier(); } - + \Response::redirect(\Uri::current()); return null; } @@ -190,7 +199,7 @@ protected function check_login() * @return null */ public function login() - { + { if (($this->get_access_key() === null || $this->get_access_secret() === null)) { \Response::redirect($this->get_auth_url()); @@ -326,6 +335,30 @@ public function set_access_verifier( $verifier ) return $this; } + + /** + * Unsets the access key verifier in the session + * + * @return $this + */ + public function unset_access_verifier( ) + { + $tokens = \Session::get('twitter_oauthtokens'); + + if ($tokens === false || ! is_array($tokens)) + { + $tokens = array( ); + } + else + { + unset( $tokens['access_verifier'] ); + } + + \Session::set('twitter_oauthtokens', $tokens); + + return $this; + } + /** * Sets the access secret in the session * @@ -393,8 +426,9 @@ protected function get_request_token() * @return string The access token */ protected function get_access_token() - { - return $this->http_request('GET', $this->access_token_url, array( 'oauth_verifier' => $this->get_access_verifier() ) ); + { + // $result = $this->http_request('GET', $this->access_token_url, array( 'oauth_verifier' => $this->get_access_verifier() ) ); + return $this->http_request('POST', $this->access_token_url, array( 'oauth_verifier' => $this->get_access_verifier() ) ); } @@ -413,11 +447,11 @@ protected function http_request($method = null, $url = null, $params = null) return false; } - if (empty($params['oauth_signature'])) + if (empty($params['oauth_signature'])) { $params = $this->prep_params($method, $url, $params); } - + $this->connection = new \Twitter_Connection(); try @@ -499,6 +533,8 @@ protected function prep_params($method = null, $url = null, $params = null) $oauth['oauth_timestamp'] = time(); $oauth['oauth_signature_method'] = $this->signature_method; $oauth['oauth_version'] = $this->version; + + array_walk($oauth, array($this, 'encode_rfc3986'));