1: <?php
2:
3: 4: 5: 6: 7: 8: 9:
10:
11: namespace TwitterOAuth\Auth;
12:
13: class ApplicationOnlyAuth extends AuthAbstract
14: {
15: 16: 17: 18: 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: 37: 38: 39: 40: 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: 68: 69: 70: 71:
72: public function setBearerToken($bearerToken)
73: {
74: $this->bearerToken = $bearerToken;
75:
76: unset($bearerToken);
77:
78: return true;
79: }
80:
81: 82: 83: 84: 85: 86: 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: 119: 120: 121:
122: protected function getBearerTokenCredentials()
123: {
124: $signingKey = rawurlencode($this->getConsumerKey()) . ':' . rawurlencode($this->getConsumerSecret());
125:
126: return base64_encode($signingKey);
127: }
128:
129: 130: 131: 132: 133:
134: protected function getBearerTokenUrl()
135: {
136: return $this->urls['domain'] . $this->urls['getToken'];
137: }
138:
139: 140: 141: 142: 143:
144: protected function getInvalidateBearerTokenUrl()
145: {
146: return $this->urls['domain'] . $this->urls['invToken'];
147: }
148:
149: 150: 151: 152: 153:
154: protected function ()
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: 165: 166: 167:
168: protected function ()
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: }