Issue
I'm new with Guzzle and I'm trying to make a call to Google API with it. I tried in this way with no luck: href="https://stackoverflow.com/questions/15399381/php-guzzle-sending-authorization-key-in-header">PHP + Guzzle, Sending Authorization Key in Header
Here is my code:
$client = new Client();
try {
$request = $client->get ( 'https://www.googleapis.com/analytics/v3/data/ga' );
/*setting Authorization token*/
$request->addHeader('authorization', $accessToken);
$query = $request->getQuery();
$query->set('ids', $profileId);
$query->set('start-date', $startDate);
$query->set('end-date', $endDate);
$query->set('metrics', $metrics);
$response = $request->send();
$response = $response->json();
var_dump($response);
} catch (ClientErrorResponseException $e) {
var_dump($e->getMessage ());
}
I'm always getting this response:
"Client error response
[status code] 401
[reason phrase] Unauthorized
[url] https://www.googleapis.com/analytics/v3/data/ga?ids=ga%3AXXXXXX&start-date=2014-07-01&end-date=2014-07-01&metrics=ga%3Asessions"
I've tried the same call using PHP curl and I'm getting the correct response, but I'd like to use Guzzle in this project.
What is the correct way to do this
array ( CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . $accessToken ))
with Guzzle?
Solution
The problem you are having is that a Request to the Google Analytics API is sent as a Get. Adding a header is used for a POST.
$request->addHeader('authorization', $accessToken);
The following will add the accessToken as part of the Get in your request.
$query->set('oauth_token', $accessToken);
Answered By - DaImTo Answer Checked By - Clifford M. (WPSolving Volunteer)