gpt4 book ai didi

php - 如何使用 Google API 从多个 Google Analytics 帐户中检索数据?

转载 作者:行者123 更新时间:2023-12-03 16:16:53 25 4
gpt4 key购买 nike

我有一个 Web 应用程序,它让用户可以选择授予它离线访问用户的 Google Analytics 帐户的权限。我遇到的问题是,当我需要一次从多个 Google Analytics 帐户输出数据时。当我为每个用户更新访问 token 并尝试检索数据时,我总是从存储的第一个访问 token 中接收数据。

下面是循环通过 2 个刷新 token 、为每个刷新 token 创建和设置访问 token 并提取每个用户有权访问的配置文件 ID 的示例 PHP 代码。由于我在循环中重置了访问 token ,因此我希望它输出每个用户可以访问的配置文件,但相反,它会输出第一个用户可以访问两次的配置文件。同样,如果我将循环更改为从第二个刷新 token 开始,则第二个用户访问的配置文件将打印两次:

$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)”命令,但这似乎也不起作用。

最佳答案

更新访问 token 是不够的。需要在循环中创建一个新客户端来为每个用户提取唯一数据。这是可以工作的代码的更新版本:

$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>";
}
}
}

关于php - 如何使用 Google API 从多个 Google Analytics 帐户中检索数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40203686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com