使用服务帐户访问Google Analytics API不会';不起作用


Using Service Account to access Google Analytics API doesn't work

我正试图使用服务帐户访问我的Google Analytics数据。我在开发者控制台中创建了一个,并在同一控制台中启用了Google Analytics API,但不知何故,我无法从API中提取数据。

我已经使用了这一页上的脚本。

我的代码如下:

<?php
$keyfile = 'google/key.p12';
// Initialise the Google Client object
$client = new Google_Client();
$client->setApplicationName('MyNAME');
$client->setAssertionCredentials(
        new Google_AssertionCredentials(
        'XXXX@developer.gserviceaccount.com', array('https://www.googleapis.com/auth/analytics.readonly'), file_get_contents($keyfile)
        )
);
$client->setClientId('XXXX.apps.googleusercontent.com');
$client->setAccessType('offline_access');
$analytics = new Google_AnalyticsService($client);
$analytics_id = 'ga:UA-XXXXXX-1'; // http://productforums.google.com/forum/#!topic/analytics/dRuAr1K4waI
// get data for the last 2 weeks
$lastWeek = date('Y-m-d', strtotime('-2 week'));
$today = date('Y-m-d');
// Test connection
try {
    $results = $analytics->data_ga->get($analytics_id, $lastWeek, $today, 'ga:visits');
    echo '<b>Number of visits this week:</b> ';
    echo $results['totalsForAllResults']['ga:visits'];
} catch (Exception $e) {
    echo 'There was an error : - ' . $e->getMessage();
}
?>

注意:如果它说"XXXX",则表示出于安全目的,我删除了部分字符串;正确的字符串在我的实际脚本中

它应该显示用户数量或错误,但我得到的只是一个空白屏幕。我确信密钥文件的URL是正确的。

有人对如何解决这个问题有建议吗?非常感谢。

看起来你正在使用你的属性Id(UA-XXX-1)来代替你的视图(配置文件)Id。如果你去谷歌分析查询资源管理器,它可以很容易地看到你的实际ga:XXXX视图(配置文件)Id是什么。任何给定的属性都可以有多个视图(配置)。本参考指南对该请求所需的参数进行了很好的描述。