关于 Google Analytics Reporting Api:Google Analytics Reporting Api – PHP:添加用户帐户

Google Analytics Reporting Api - PHP: Add user account

我想做什么

  • 让我的 Web 应用程序的用户与应用程序共享他们的分析帐户。
  • 将用户重定向到要求他们批准访问的 Google 身份验证
  • 将用户重定向回应用程序。
  • 根据用户的分析数据和来自应用程序的数据为用户生成报告。
  • 下次用户生成他们的报告时,我不想再次要求他们进行日志记录。

问题出在哪里

我阅读了这份 Google 开发人员 PHP 指南。但是,示例代码连接到已与应用共享的第一个帐户。

我想看到一段代码,要求用户提供他们的凭据,从而提供对其帐户的访问权限。

在堆栈上我已经找到了这个答案服务应用程序和 Google Analytics API V3:服务器到服务器 OAuth2 身份验证?。但是,提到的APP_EMAIL 不是特定用户的电子邮件,而是在控制台中创建的应用程序的developer.gserviceaccount.com 标识。

我也发现了这个线程谷歌分析核心报告 API 3.0 版没有客户端登录。似乎在那里解决了类似的主题,但是代码的重要部分(从我的angular来看)在那里丢失了。


首先,确保通过将访问类型设置为离线来获取刷新令牌。
然后创建一个单独的页面进行报告。
单独的页面应该为所有报告使用帐户 ID 和刷新令牌,如果它给你一个令牌错误,你可以自己刷新它,或者将它们发送回登录页面。

您只需要求提供一次凭据即可访问所有帐户。 php 指南仅使用第一个帐户,但是您可以遍历所有帐户并获得更多

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$client = new Google_Client();
$client->setAuthConfig(__DIR__ . '/creds/client_secrets.json');
$client->setIncludeGrantedScopes(true);
$client->setAccessType("offline");
$client->setApprovalPrompt('force');
$client->addScope(Google_Service_Analytics::ANALYTICS_EDIT);
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);

// If the user has already authorized this app then get an access token
// else redirect to ask the user to authorize access to Google Analytics.
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
        // Set the access token on the client.
        $client->setAccessToken($_SESSION['access_token']);
        // Create an authorized analytics service object.
        $analytics = new Google_Service_Analytics($client);
        $accounts=getAccountIds($analytics);
        foreach($accounts as $acc)
        {
         var_dump($acc);
}
}
else {
        $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php';
        header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}