【发布时间】:2016-10-23 13:53:54
【问题描述】:
我有一个网络应用程序,它的用户可以选择授予它离线访问用户的 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)”命令,但这似乎也不起作用。
【问题讨论】:
-
确保您也在更新客户端中的刷新令牌。如果需要,客户端库将使用它拥有的刷新令牌自动获取一个新的访问令牌。
-
@DaImTo,这不是 $client->setAccessToken($access_token) 调用的作用吗?
标签: php google-analytics google-api google-analytics-api google-api-php-client