【发布时间】:2014-03-27 08:57:12
【问题描述】:
一直在关注有关如何插入网络属性的文档,以便我可以动态创建跟踪代码。目标是将我们的分析转移到谷歌分析中,并在分析下在他们自己的谷歌账户上自动创建客户网站。经过我在网上几乎找不到的东西,似乎这个功能可能被列入白名单。所以我提出这个问题是为了弄清楚天气是否如此。文档很难弄清楚,因为它没有告诉您哪些字段是必需的,字段的含义等。似乎 PHP 库的文档已经过时了。必须更改许多示例代码类名称和方法名称才能使其“工作”。
这是我用来测试此功能的代码 sn-p。
<?php
require_once 'Google/Client.php';
require_once 'Google/Service/Analytics.php';
require_once 'Google/Service/Oauth2.php';
session_start();
$client = new Google_Client();
$client->setClientId('xxxxx');
$client->setClientSecret('xxxxxx');
$client->setRedirectUri('xxxxxxxx');
$client->setDeveloperKey('xxxxxxx');
$client->setScopes(
array(
'https://www.googleapis.com/auth/analytics.readonly',
'https://www.googleapis.com/auth/analytics',
'https://www.googleapis.com/auth/userinfo.profile',
'https://www.googleapis.com/auth/analytics.edit',
'https://www.googleapis.com/auth/analytics.manage.users'
)
);
$oauth2 = new Google_Service_Oauth2($client);
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['access_token'] = $client->getAccessToken();
$redirect = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
}
if (isset($_REQUEST['logout'])) {
unset($_SESSION['access_token']);
}
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
$client->setAccessToken($_SESSION['access_token']);
}
if (!$client->getAccessToken()) {
$authUrl = $client->createAuthUrl();
print "<a class='login' href='$authUrl'>Connect Me!</a>";
} else {
$analytics = new Google_Service_Analytics($client);
try {
$user = $oauth2->userinfo->get();
$permission = new Google_Service_Analytics_WebpropertyPermissions();
$permission->setEffective(array('EDIT', 'VIEW'));
$trackingObject = new Google_Service_Analytics_Webproperty();
$trackingObject->setAccountId($user['id']);
//$trackingObject->setDefaultProfileId($user['id']);
$trackingObject->setId('UA-xxxxx-1');
$trackingObject->setPermissions($permission);
$trackingObject->setIndustryVertical('INTERNET_AND_TELECOM');
$trackingObject->setLevel('STANDARD');
$trackingObject->setName('xxxxxx');
$trackingObject->setWebsiteUrl('xxxxxx');
$analytics->management_webproperties->insert($user['id'], $trackingObject);
$accounts = $analytics->management_accounts->listManagementAccounts();
echo '<pre>'; print_r($user); echo '</pre>';
echo '<pre>'; print_r($accounts); echo '</pre>';
die();
} catch (apiServiceException $e) {
// Error from the API.
print 'There was an API error : ' . $e->getCode() . ' : ' . $e->getMessage();
} catch (Exception $e) {
print 'There was a general error : ' . $e->getMessage();
}
}
我得到的例外是标题包含的内容。
【问题讨论】:
-
您是否尝试过使用 API 资源管理器? developers.google.com/analytics/devguides/config/mgmt/v3/… 你说得对,PHP 的文档已经过时了。一个新的正在开发中。
-
是的,我按照您发送的链接来帮助填写哪些字段。使用他们的测试工具,我会收到“500 后端错误”消息,或者如果我自己调用它,我会收到相同的消息。我有一种感觉,要么缺少参数,要么填写错误。
-
我在插入用户时遇到了同样的问题,我从来没有让它工作。我认为这将是一个使用 API 浏览器的案例,直到我们确切地找出我们需要发送的内容。
-
您是否已在您的 Google Analytics(分析)中将 xxxxxxxx@developer.gserviceaccount.com 注册为管理员级别的用户?检查stackoverflow.com/questions/16944933/…
-
@KamranShahid 这是一个不同的错误。但是当我授权使用范围时,我不需要将任何人添加为管理员。是吗?我现在就对其进行测试,看看它是否有所作为。
标签: php google-analytics google-api google-analytics-api google-api-php-client