0

我試圖構建一個簡單的腳本來導入通過我的CMS發佈的文章的頁面查看計數。我使用Google AnalyticsAPI查詢構建器輕鬆構建了我的查詢,它可以快速返回所需的結果。我的Web服務器上的計劃作業將每天運行一次查詢,並更新和查看頁面計數。嘗試通過http訪問Google AnalyticsAPI的身份驗證錯誤(不使用oAuth)

因爲我只是拉訪問頁面,我相信沒有必要通過整個oAuth過程。此Google帳戶只有一個網絡媒體資源,並且只有一個配置文件,因此沒有必要推出該例程。

我註冊了一個應用程序並創建了一個API密鑰。我已確保Google Analytics已針對此配置文件啓用。根據我對API的閱讀,我相信我可以將此密鑰作爲http參數傳遞給正確授權查詢。

當我通過http運行查詢時,出現授權錯誤(401)。查詢包含如下:

https://www.googleapis.com/analytics/v3/data/ga?ids=ga%3A[MY ID]&metrics=ga%3Apageviews&start-date=2012-08-09&end-date=2012-08-23&max-results=50&key=[MY API KEY] 

我GOOGLE了許多這樣的例子,但它們似乎都實現了非常精細的(在我的使用情況下不必要的)身份驗證程序。但也許我錯過了一些東西。

非常感謝提前。

  • 克里斯,沮喪的Google用戶

回答

1

用這個例子來修復401錯誤http://dumitruglavan.com/ganalytics-class-access-google-analytics-data-api-with-php/

您必須授權:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://www.google.com/accounts/ClientLogin"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, true); 

$data = array(
    'accountType' => 'GOOGLE', 
    'Email' => $email, 
    'Passwd' => $password, 
    'service' => 'analytics', 
    'source' => '' 
); 

curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
$output = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 

$auth = ''; 
if($info['http_code'] == 200) { 
    preg_match('/Auth=(.*)/', $output, $matches); 
    if(isset($matches[1])) { 
     $auth = $matches[1]; 
    } else { 
     throw new Exception('Login failed with message: ' . $output); 
    } 
} 

而且在頭授權發送的授權令牌之後:

$headers = array("Authorization: GoogleLogin auth=$auth"); 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
$output = curl_exec($ch); 
$info = curl_getinfo($ch); 
curl_close($ch); 
+1

單鏈路被認爲是一個不好的答案(參見[faq#刪除]),因爲它本身毫無意義,並且**目標資源不能保證在將來活着**。 [這將是最好的](http://meta.stackexchange.com/q/8259)在這裏包括答案的基本部分,並提供鏈接供參考。 – j0k

+0

感謝您的建議。我改進了我的答案 – pirogtm

相關問題