public function request($path, $method = 'GET', $body = null, array $extra_headers = array())
{
$access_token = $this->access_token;
$service = Facades\Social::service($this->provider);
if (2 === Facades\Social::oauthSpec($this->provider)) {
$token = new StdOAuth2Token();
$token->setAccessToken(array_get($access_token, 'token'));
} else {
$token = new StdOAuth1Token();
$token->setAccessToken(array_get($access_token, 'token'));
$token->setAccessTokenSecret(array_get($access_token, 'secret'));
}
$service->getStorage()->storeAccessToken(ucfirst($this->provider), $token);
try {
return $service->request($path, $method, $body, $extra_headers);
} catch (\OAuth\Common\Http\Exception\TokenResponseException $e) {
if ($this->refreshAccessToken()) {
return $service->request($path, $method, $body, $extra_headers);
}
throw $e;
}
}