Google REST-ful电话+ Guzzle:设置授权令牌

Dia*_* R. 5 php curl authorization google-analytics-api guzzle

我是Guzzle的新手,我正试图用它调用Google API.我试着用这种方式没有运气:PHP + Guzzle,在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 ());                     
}
Run Code Online (Sandbox Code Playgroud)

我总是得到这样的回应:

"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"
Run Code Online (Sandbox Code Playgroud)

我已经尝试使用PHP curl进行相同的调用,我得到了正确的响应,但我想在这个项目中使用Guzzle.

array ( CURLOPT_HTTPHEADER => array( 'Authorization: Bearer ' . $accessToken ))使用Guzzle 执行此操作的正确方法是什么 ?

DaI*_*mTo 4

您遇到的问题是对 Google Analytics API 的请求是作为 Get 发送的。添加标头用于 POST。

$request->addHeader('authorization', $accessToken);
Run Code Online (Sandbox Code Playgroud)

下面将添加 accessToken 作为请求中 Get 的一部分。

$query->set('oauth_token', $accessToken);
Run Code Online (Sandbox Code Playgroud)