如何使用 Google API 从多个 Google Analytics 帐户检索数据?
How to retrieve data from multiple Google Analytics accounts using Google API?
我有一个 Web 应用程序,它允许用户选择授予它对用户的 Google Analytics 帐户的离线访问权限。我 运行 遇到的问题是,当我需要一次从多个 Google Analytics 帐户输出数据时。当我为每个用户更新访问令牌并尝试检索数据时,我总是从存储的第一个访问令牌接收数据。
下面是示例 PHP 代码,循环遍历 2 个刷新令牌,为每个令牌创建和设置访问令牌,并提取每个用户有权访问的配置文件 ID。由于我在循环中重置了访问令牌,我希望它输出每个用户有权访问的配置文件,但相反,它输出第一个用户有权访问两次的配置文件。同样,如果我将循环更改为从第二个刷新令牌开始,则第二个用户访问的配置文件将打印两次:
$refresh_token1 = "123";
$refresh_token2 = "456";
foreach(array($refresh_token1,$refresh_token2) as $r){
$access_token = array( "access_token" => "", "token_type" => "Bearer", "expires_in" => 0, "refresh_token" => $r, "created" => 0 );
$client->setAccessToken($access_token);
$analytics = new Google_Service_Analytics($client);
$obj = $analytics->management_profiles->listManagementProfiles('~all', '~all');
if (count($obj->getItems()) > 0) {
$items = $obj->getItems();
foreach($items as $item){
echo $item->getId()."<BR>";
}
}
}
我也试过在第一个循环后调用“$client->refreshToken($r)”命令,但这似乎也不起作用。
更新访问令牌是不够的。需要在循环中创建一个新的客户端来为每个用户提取唯一的数据。这是可用代码的更新版本:
$refresh_token1 = "123";
$refresh_token2 = "456";
foreach(array($refresh_token1,$refresh_token2) as $r){
$client = new Google_Client();
$client->setAuthConfig(__DIR__ . '/client_secrets.json');
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);
$access_token = array( "access_token" => "", "token_type" => "Bearer", "expires_in" => 0, "refresh_token" => $r, "created" => 0 );
$client->setAccessToken($access_token);
$analytics = new Google_Service_Analytics($client);
$obj = $analytics->management_profiles->listManagementProfiles('~all', '~all');
if (count($obj->getItems()) > 0) {
$items = $obj->getItems();
foreach($items as $item){
echo $item->getId()."<BR>";
}
}
}
我有一个 Web 应用程序,它允许用户选择授予它对用户的 Google Analytics 帐户的离线访问权限。我 运行 遇到的问题是,当我需要一次从多个 Google Analytics 帐户输出数据时。当我为每个用户更新访问令牌并尝试检索数据时,我总是从存储的第一个访问令牌接收数据。
下面是示例 PHP 代码,循环遍历 2 个刷新令牌,为每个令牌创建和设置访问令牌,并提取每个用户有权访问的配置文件 ID。由于我在循环中重置了访问令牌,我希望它输出每个用户有权访问的配置文件,但相反,它输出第一个用户有权访问两次的配置文件。同样,如果我将循环更改为从第二个刷新令牌开始,则第二个用户访问的配置文件将打印两次:
$refresh_token1 = "123";
$refresh_token2 = "456";
foreach(array($refresh_token1,$refresh_token2) as $r){
$access_token = array( "access_token" => "", "token_type" => "Bearer", "expires_in" => 0, "refresh_token" => $r, "created" => 0 );
$client->setAccessToken($access_token);
$analytics = new Google_Service_Analytics($client);
$obj = $analytics->management_profiles->listManagementProfiles('~all', '~all');
if (count($obj->getItems()) > 0) {
$items = $obj->getItems();
foreach($items as $item){
echo $item->getId()."<BR>";
}
}
}
我也试过在第一个循环后调用“$client->refreshToken($r)”命令,但这似乎也不起作用。
更新访问令牌是不够的。需要在循环中创建一个新的客户端来为每个用户提取唯一的数据。这是可用代码的更新版本:
$refresh_token1 = "123";
$refresh_token2 = "456";
foreach(array($refresh_token1,$refresh_token2) as $r){
$client = new Google_Client();
$client->setAuthConfig(__DIR__ . '/client_secrets.json');
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);
$access_token = array( "access_token" => "", "token_type" => "Bearer", "expires_in" => 0, "refresh_token" => $r, "created" => 0 );
$client->setAccessToken($access_token);
$analytics = new Google_Service_Analytics($client);
$obj = $analytics->management_profiles->listManagementProfiles('~all', '~all');
if (count($obj->getItems()) > 0) {
$items = $obj->getItems();
foreach($items as $item){
echo $item->getId()."<BR>";
}
}
}