Skip to content

Instantly share code, notes, and snippets.

@hayden-t
Forked from hubgit/OAuthClient.php
Created February 8, 2019 07:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hayden-t/f63418e92586cd6b34fed6e55dffe0e3 to your computer and use it in GitHub Desktop.
Save hayden-t/f63418e92586cd6b34fed6e55dffe0e3 to your computer and use it in GitHub Desktop.
PHP OAuth 1.0 client using cURL
<?php
class OAuthClient {
/** @var OAuth */
public $oauth;
/** @var cURL */
public $curl;
function __construct(array $config) {
// sudo pecl install oauth
$this->oauth = new OAuth($config['api_key'], $config['api_secret']);
$this->oauth->setToken($config['access_token'], $config['access_token_secret']);
$this->curl = curl_init();
curl_setopt_array($this->curl, array(
CURLOPT_CONNECTTIMEOUT => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_VERBOSE => true,
));
}
function exec($url, $data = array(), $method = 'GET') {
curl_setopt($this->curl, CURLOPT_URL, $url);
switch ($method) {
case 'GET':
curl_setopt($this->curl, CURLOPT_HTTPGET, true);
break;
case 'POST':
curl_setopt($this->curl, CURLOPT_POSTFIELDS, http_build_query($data));
break;
}
curl_setopt($this->curl, CURLOPT_HTTPHEADER, array(
'Authorization: ' . $this->oauth->getRequestHeader($method, $url, $data)
));
curl_exec($this->curl);
// TODO: retry connection if failed, with backoff
// TODO: retry on idle connection
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment