#!/usr/bin/env php {'access_token'}; } /** * Invalidates the Bearer Token * Should the bearer token become compromised or need to be invalidated for any reason, * call this method/function. */ function invalidate_bearer_token($bearer_token){ $encoded_consumer_key = urlencode(CONSUMER_KEY); $encoded_consumer_secret = urlencode(CONSUMER_SECRET); $consumer_token = $encoded_consumer_key.':'.$encoded_consumer_secret; $base64_encoded_consumer_token = base64_encode($consumer_token); // step 2 $url = "https://api.twitter.com/oauth2/invalidate_token"; // url to send data to for authentication $headers = array( "POST /oauth2/invalidate_token HTTP/1.1", "Host: api.twitter.com", "User-Agent: jonhurlock Twitter Application-only OAuth App v.1", "Authorization: Basic ".$base64_encoded_consumer_token."", "Accept: */*", "Content-Type: application/x-www-form-urlencoded", "Content-Length: ".(strlen($bearer_token)+13)."" ); $ch = curl_init(); // setup a curl curl_setopt($ch, CURLOPT_URL,$url); // set url to send to curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // set custom headers curl_setopt($ch, CURLOPT_POST, 1); // send as post curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // return output curl_setopt($ch, CURLOPT_POSTFIELDS, "access_token=".$bearer_token.""); // post body/fields to be sent $header = curl_setopt($ch, CURLOPT_HEADER, 1); // send custom headers $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $retrievedhtml = curl_exec ($ch); // execute the curl curl_close($ch); // close the curl return $retrievedhtml; } /** * Search * Basic Search of the Search API * Based on https://dev.twitter.com/docs/api/1.1/get/search/tweets */ function search_for_a_term($bearer_token, $query, $result_type='mixed', $count='15'){ $url = "https://api.twitter.com/1.1/statuses/user_timeline.json"; $q = urlencode(trim($query)); // query term $formed_url ='?q='.$q; // fully formed url if($result_type!='mixed'){$formed_url = $formed_url.'&result_type='.$result_type;} // result type - mixed(default), recent, popular if($count!='15'){$formed_url = $formed_url.'&count='.$count;} // results per page - defaulted to 15 $formed_url = $formed_url.'&include_entities=true'; // makes sure the entities are included, note @mentions are not included see documentation $headers = array( "GET /1.1/search/tweets.json".$formed_url." HTTP/1.1", "Host: api.twitter.com", "User-Agent: jonhurlock Twitter Application-only OAuth App v.1", "Authorization: Bearer ".$bearer_token."", ); $ch = curl_init(); // setup a curl curl_setopt($ch, CURLOPT_URL,$url.$formed_url); // set url to send to curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); // set custom headers curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // return output $retrievedhtml = curl_exec ($ch); // execute the curl curl_close($ch); // close the curl return $retrievedhtml; } // lets run a search. $bearer_token = get_bearer_token(); // get the bearer token print search_for_a_term($bearer_token, "test"); // search for the work 'test' //invalidate_bearer_token($bearer_token); // invalidate the token ?>