add ProviderInterface::getHeaders() for making authenticated requests

oauth1test
Woody Gilk 2015-03-01 11:09:55 -06:00
parent 57ea7ac8f9
commit 844df96de4
2 changed files with 28 additions and 5 deletions

View File

@ -31,7 +31,9 @@ abstract class AbstractProvider implements ProviderInterface
public $responseType = 'json'; public $responseType = 'json';
public $headers = null; public $headers = [];
public $authorizationHeader;
/** /**
* @var GuzzleClient * @var GuzzleClient
@ -323,17 +325,19 @@ abstract class AbstractProvider implements ProviderInterface
{ {
$url = $this->urlUserDetails($token); $url = $this->urlUserDetails($token);
return $this->fetchProviderData($url); $headers = $this->getHeaders($token);
return $this->fetchProviderData($url, $headers);
} }
protected function fetchProviderData($url) protected function fetchProviderData($url, array $headers = [])
{ {
try { try {
$client = $this->getHttpClient(); $client = $this->getHttpClient();
$client->setBaseUrl($url); $client->setBaseUrl($url);
if ($this->headers) { if ($headers) {
$client->setDefaultOption('headers', $this->headers); $client->setDefaultOption('headers', $headers);
} }
$request = $client->get()->send(); $request = $client->get()->send();
@ -348,6 +352,23 @@ abstract class AbstractProvider implements ProviderInterface
return $response; return $response;
} }
protected function getAuthorizationHeaders($token)
{
$headers = [];
if ($this->authorizationHeader) {
$headers['Authorization'] = $this->authorizationHeader . ' ' . $token;
}
return $headers;
}
public function getHeaders($token = null)
{
$headers = $this->headers;
if ($token) {
$headers = array_merge($headers, $this->getAuthorizationHeaders($token));
}
return $headers;
}
public function setRedirectHandler(Closure $handler) public function setRedirectHandler(Closure $handler)
{ {

View File

@ -24,6 +24,8 @@ interface ProviderInterface
public function getAccessToken($grant = 'authorization_code', $params = []); public function getAccessToken($grant = 'authorization_code', $params = []);
public function getHeaders($token = null);
public function getUserDetails(AccessToken $token); public function getUserDetails(AccessToken $token);
public function getUserUid(AccessToken $token); public function getUserUid(AccessToken $token);