32

我正在尝试通过服务帐户使用 Google Analytics API 获取数据。

我一直在搜索 stackoverflow 如何做到这一点,并使用在几篇文章中找到的完全相同的代码,但遇到问题才能使其正常工作。

资料来源:

服务应用程序和 Google Analytics API V3:服务器到服务器 OAuth2 身份验证?

服务应用程序和 Google Analytics API V3:错误 101 (net::ERR_CONNECTION_RESET)

http://code.google.com/p/google-api-php-client/source/browse/trunk/examples/prediction/serviceAccount.php

这就是我得到的:

require_once('googleAPIGoogle_Client.php');
require_once('googleAPI/contrib/Google_AnalyticsService.php');

const CLIENT_ID = 'xxxxxxxx001.apps.googleusercontent.com';
const SERVICE_ACCOUNT_NAME = 'xxxxxx001@developer.gserviceaccount.com';


$keyfile = $_SERVER['DOCUMENT_ROOT']."/xxxxxxx284-privatekey.p12";


$client = new Google_Client();
$client->setAccessType('offline');
$client->setApplicationName("cc insights");


$key = file_get_contents($keyfile);
$client->setClientId(CLIENT_ID);

$client->setAssertionCredentials(new Google_AssertionCredentials(
    SERVICE_ACCOUNT_NAME,
    array('https://www.googleapis.com/auth/analytics.readonly'),
    $key)
);


$service = new Google_AnalyticsService($client);

$data = $service->data_ga->get("ga:xxxx7777", "2012-01-01", "2013-01-25", "ga:pageviews");
var_dump($data);

执行时出现以下错误:

致命错误:未捕获的异常“Google_ServiceException”和消息“调用 GET 时出错” https://www.googleapis.com/analytics/v3/data/ga?ids=ga%3Axxxx7777&start-date=2012-01-01&end-date=2013- 01-25&metrics=ga%3Apageviews: (403) 用户对此配置文件没有足够的权限。' 在 /Applications/XAMPP/xamppfiles/htdocs/insights/application/libraries/googleAPI/io/Google_REST.php:66 堆栈跟踪:#0 /Applications/XAMPP/xamppfiles/htdocs/insights/application/libraries/googleAPI/io/Google_REST .php(36): Google_REST::decodeHttpResponse(Object(Google_HttpRequest)) #1 /Applications/XAMPP/xamppfiles/htdocs/insights/application/libraries/googleAPI/service/Google_ServiceResource.php(178): Google_REST::execute(Object (Google_HttpRequest)) #2 /Applications/XAMPP/xamppfiles/htdocs/insights/application/libraries/googleAPI/contrib/Google_AnalyticsService.php(383): Google_ServiceResource->__call('get', Array) #3 /Applications/XAMPP/ xamppfiles/htdocs/insights/application/libraries/Google.php(46): Google_DataGaServiceResource->get('

因为我使用与工作示例完全相同的代码,我认为这可能是 API 或服务帐户设置的问题?

这是我添加到分析帐户的用户: 分析用户

这是 api 访问帐户: api访问

有人知道我在做什么错吗?

4

11 回答 11

70

我得到了完全相同的错误,这为我解决了它:

我使用的是帐户 ID 而不是视图 ID。切换到视图 ID 修复了它 - 它始终是“视图 ID”,而不是帐户或属性 ID(看起来像“UA-xxx”)。查看 ID 用于特定的网络媒体资源,可以在管理->查看(第 3 列)->查看设置中找到。它是一个没有破折号的整数。

https://stackoverflow.com/a/15789266/1391229

于 2013-06-17T12:18:00.200 回答
10

今天也有同样的问题,profileId 很难找到,你可以在分析中的每个 Url 中找到它,比如说https://www.google.com/analytics/web/#management/Settings/aXXXXXXwYYYYYYYpZZZZZZZ/ 这是 ZZZZZZZ 部分

于 2013-07-29T12:48:26.160 回答
6

同样的问题。通过使用 VIEW id 而不是帐户 ID (UA-XXXXX-1) 解决了这个问题。

Analytics Console > Admin -> View (Profile) -> View Settings -> View ID

确保将服务帐户添加到 Google Analytics Console 中的用户列表中。只需在开发人员控制台的凭据、API 和权限部分进行设置,仍不会授予它访问您的分析的权限。

Analytics Console > Admin -> Account -> User Management -> "Add permissions for:"
于 2014-10-09T08:48:34.870 回答
4

使用查看 ID 不是帐户 ID,在“管理”选项卡上的“查看设置”“查看 ID”。

于 2014-02-27T11:17:10.043 回答
4

得到了同样的错误,但过了一会儿我意识到我正在使用我的谷歌浏览器(我自己的电子邮件地址)使用这个脚本,但分析 API 正在公司电子邮件上运行。所以解决方案可能是编辑你的谷歌浏览器的设置。只需在您的谷歌浏览器(设置)中断开与 gmail 帐户的连接并再次测试。

于 2013-03-05T13:41:17.827 回答
3

在尝试找到解决方案 2 周后对我有很大帮助:

分析控制台 -> 管理员 -> 查看(配置文件)-> 查看设置 -> 查看 ID

于 2015-02-09T12:00:56.960 回答
1

我在使用 .net 库时遇到了同样的问题,经过一些修补后,我找到了解决方案:

转到您的谷歌分析管理站点并将服务帐户添加为用户并授予该帐户必要的权限

于 2014-01-10T05:56:21.453 回答
1

在另一个应用程序上,我得到“权限不足”,发现我的 .htaccess 文件有一些导致问题的文件限制。

于 2013-01-25T17:50:11.280 回答
0

有问题..事实证明帐户 ID 隐藏在您的分析帐户的 URL 中!

https://developers.google.com/analytics/devguides/reporting/core/v3/#user_reports

URL 通常如下所示:

https://www.google.com/analytics/web/?hl=en#management/Settings/a51343283w84330433 p87396224 /%3Fm.page%3DAccountSettings/

我们要查找的 ID 跟在字母 p 后面。

在上面的示例中,有效的 ID 是:87396224

于 2014-06-16T04:42:25.710 回答
0

可能是您正在使用其他客户端 ID:客户端密码:获取另一个配置文件 ID 详细信息

于 2013-09-14T10:38:03.067 回答
0

请创建共享段...它将起作用

http://www.periscopix.co.uk/blog/google-analytics-new-feature-shared-segments/

于 2015-10-13T19:17:55.217 回答