我是Guzzle的新手,我正试图用它来调用Google API。我试着用这种方式没有运气:PHP + Guzzle, Sending Authorization Key in Header
这是我的代码:
$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 :(得分:4)
您遇到的问题是Google Analytics API的请求是作为Get发送的。添加标头用于POST。
$request->addHeader('authorization', $accessToken);
以下内容会将accessToken作为Get in your request的一部分添加。
$query->set('oauth_token', $accessToken);