Overview

Namespaces

  • TwitterOAuth
    • Auth
    • Common
    • Exception
    • Serializer

Classes

  • ApplicationOnlyAuth
  • AuthAbstract
  • SingleUserAuth
  • Overview
  • Namespace
  • Class
  • Tree
  1: <?php
  2: 
  3: /**
  4:  * TwitterOAuth - https://github.com/ricardoper/TwitterOAuth
  5:  * PHP library to communicate with Twitter OAuth API version 1.1
  6:  *
  7:  * @author Ricardo Pereira <github@ricardopereira.es>
  8:  * @copyright 2014
  9:  */
 10: 
 11: namespace TwitterOAuth\Auth;
 12: 
 13: class ApplicationOnlyAuth extends AuthAbstract
 14: {
 15:     /**
 16:      * Expects the follow parameters:
 17:      *   - consumer_key      Twitter API key      * Required
 18:      *   - consumer_secret   Twitter API secret   * Required
 19:      */
 20:     protected $requiredCredentials = array(
 21:         'consumer_key',
 22:         'consumer_secret',
 23:     );
 24: 
 25:     protected $urls = array(
 26:         'domain' => 'https://api.twitter.com/',
 27:         'api' => '1.1/',
 28:         'getToken' => 'oauth2/token',
 29:         'invToken' => 'oauth2/invalidate_token',
 30:     );
 31: 
 32:     protected $bearerToken = null;
 33: 
 34: 
 35:     /**
 36:      *  Get a bearer token from consumer keys
 37:      *
 38:      * @return null|string  Bearer token
 39:      * @throws \TwitterOAuth\Exception\CurlException
 40:      * @throws \TwitterOAuth\Exception\TwitterException
 41:      */
 42:     public function getBearerToken()
 43:     {
 44:         $url = $this->getBearerTokenUrl();
 45: 
 46:         $params = array(
 47:             'post' => array('grant_type' => 'client_credentials'),
 48:             'headers' => $this->buildBearerTokenHeader(),
 49:         );
 50: 
 51:         $response = $this->curl->send($url, $params);
 52: 
 53:         $obj = json_decode($response['body']);
 54: 
 55:         if (!$obj || !isset($obj->token_type) || $obj->token_type != 'bearer') {
 56:             $this->findExceptions($response);
 57:         }
 58: 
 59:         $this->bearerToken = rawurldecode($obj->access_token);
 60: 
 61:         unset($url, $params, $response, $obj);
 62: 
 63:         return $this->bearerToken;
 64:     }
 65: 
 66:     /**
 67:      *  Set a bearer token
 68:      *
 69:      * @param string $bearerToken Bearer Token
 70:      * @return bool
 71:      */
 72:     public function setBearerToken($bearerToken)
 73:     {
 74:         $this->bearerToken = $bearerToken;
 75: 
 76:         unset($bearerToken);
 77: 
 78:         return true;
 79:     }
 80: 
 81:     /**
 82:      *  Invalidate a bearer token
 83:      *
 84:      * @return bool
 85:      * @throws \TwitterOAuth\Exception\CurlException
 86:      * @throws \TwitterOAuth\Exception\TwitterException
 87:      */
 88:     public function invalidateBearerToken()
 89:     {
 90:         $url = $this->getInvalidateBearerTokenUrl();
 91: 
 92:         $bearerToken = $this->bearerToken;
 93: 
 94:         if ($bearerToken === null) {
 95:             $bearerToken = $this->getBearerToken();
 96:         }
 97: 
 98:         $params = array(
 99:             'post' => array('access_token' => $bearerToken),
100:             'headers' => $this->buildBearerTokenHeader(),
101:         );
102: 
103:         $response = $this->curl->send($url, $params);
104: 
105:         $obj = json_decode($response['body']);
106: 
107:         if (!$obj || !isset($obj->access_token) || $obj->access_token != $bearerToken) {
108:             $this->findExceptions($response);
109:         }
110: 
111:         unset($url, $bearerToken, $params, $response, $obj);
112: 
113:         return true;
114:     }
115: 
116: 
117:     /**
118:      * Generate bearer token credentials
119:      *
120:      * @return string  Bearer token credentials
121:      */
122:     protected function getBearerTokenCredentials()
123:     {
124:         $signingKey = rawurlencode($this->getConsumerKey()) . ':' . rawurlencode($this->getConsumerSecret());
125: 
126:         return base64_encode($signingKey);
127:     }
128: 
129:     /**
130:      * Getting bearer token URL
131:      *
132:      * @return string  Bearer token URL
133:      */
134:     protected function getBearerTokenUrl()
135:     {
136:         return $this->urls['domain'] . $this->urls['getToken'];
137:     }
138: 
139:     /**
140:      * Getting invalidate bearer token URL
141:      *
142:      * @return string  Invalidate bearer token URL
143:      */
144:     protected function getInvalidateBearerTokenUrl()
145:     {
146:         return $this->urls['domain'] . $this->urls['invToken'];
147:     }
148: 
149:     /**
150:      * Building request bearer token HTTP headers
151:      *
152:      * @return array  HTTP headers
153:      */
154:     protected function buildBearerTokenHeader()
155:     {
156:         return array(
157:             'Authorization: Basic ' . $this->getBearerTokenCredentials(),
158:             'Content-Type: application/x-www-form-urlencoded;charset=UTF-8',
159:             'Expect:'
160:         );
161:     }
162: 
163:     /**
164:      * Building request HTTP headers
165:      *
166:      * @return array  HTTP headers
167:      */
168:     protected function buildRequestHeader()
169:     {
170:         $bearerToken = $this->bearerToken;
171: 
172:         if ($this->bearerToken === null) {
173:             $bearerToken = $this->getBearerToken();
174:         }
175: 
176:         return array(
177:             'Authorization: Bearer ' . rawurlencode($bearerToken),
178:             'Expect:'
179:         );
180:     }
181: }
TwitterOAuth (for v1.1 API) API documentation generated by ApiGen