如何检索数据从多个谷歌分析帐户使用谷歌API



我有一个web应用程序,让它的用户选择授予它离线访问用户的谷歌分析帐户。我遇到的问题是,当我需要从多个谷歌分析帐户一次输出数据。当我为每个用户更新访问令牌并尝试检索数据时,我总是从存储的第一个访问令牌接收数据。

下面是示例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>";
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新