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)); } |