0

我正在尝试构建一个简单的脚本来导入通过我的 CMS 发布的文章的页面查看次数。我使用 Google Analytics API 查询构建器轻松构建了我的查询,它可以快速返回所需的结果。我的网络服务器上的计划作业将每天运行一次查询并更新和页面查看计数。

因为我只是在获取综合浏览量,所以我相信没有必要完成整个 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]

我已经用谷歌搜索了很多这样的例子,但它们似乎都实现了一个非常复杂的(在我的用例中是不必要的)身份验证例程。但也许我错过了一些东西。

提前谢谢了。

  • 克里斯,沮丧的谷歌员工
4

1 回答 1

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);
于 2013-02-22T09:28:16.530 回答