2014-08-05 2 views
4

Я новичок в Gzzle, и я пытаюсь позвонить ему в Google API. Я пытался таким образом, не повезло: PHP + Guzzle, Sending Authorization Key in HeaderGoogle REST-ful call + Guzzle: Установочный токен авторизации

Вот мой код:

$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());      
} 

Я всегда получаю такой ответ:

"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" 

Я попробовал один и тот же вызов с помощью PHP curl, и я получаю правильный ответ, но я бы хотел использовать Guzzle в этом проекте.

Что такое правильный способ для этого array (CURLOPT_HTTPHEADER => array('Authorization: Bearer ' . $accessToken)) с помощью Guzzle?

+0

Удалите строку addheader. попробуйте добавить $ query-> set ('oauth_token', $ accessToken); – DaImTo

+0

@DaImTo Я сделал это изменение, и это сработало! Большое спасибо. Если вы возражаете, отправляя его в качестве ответа ... Спасибо. –

ответ

4

Проблема, с которой вы сталкиваетесь, заключается в том, что запрос на API Google Analytics отправляется как Get. Добавление заголовка используется для POST.

$request->addHeader('authorization', $accessToken); 

Следующий элемент добавит accessToken как часть Get в ваш запрос.

$query->set('oauth_token', $accessToken);