0

我想要做的我的web应用程序共享谷歌Analytics(分析)报告API - PHP:添加用户帐户

  • 让用户自己Analytics帐户与应用是什么。
  • 将用户重定向到Google认证,要求他们批准访问
  • 将用户重定向回应用。
  • 根据他的分析数据和来自应用程序的数据为用户生成报告。
  • 下一次用户将生成他们的报告,我不想再要求他们再次登录。

问题出在哪里

我读这Google developers PHP guide。但是,示例代码连接到已经与应用程序共享的第一个帐户。

我想查看一段代码,要求用户提供他们的凭据并因此提供对其帐户的访问。

On Stack我已经找到答案Service Applications and Google Analytics API V3: Server-to-server OAuth2 authentication?。但是,提到APP_EMAIL不是特定用户的电子邮件,而是在控制台中创建的应用程序的developer.gserviceaccount.com标识。

我还发现此线程Google Analytics Core Reporting API Version 3.0 without client login。似乎在那里解决了类似的问题,但代码的重要部分(从我的角度来看)在那里没有。

+1

记住凭据不是用户的登录名和密码。这是一个刷新令牌,可让您在将来访问其帐户。在这种情况下,服务帐户不适用于您。这将是一个坏主意。我有一个教程系列,可能会帮助你开始。 http://www.daimto.com/google-development-beginners/ Dimi发布的答案中的代码应该可以工作。 – DaImTo

+0

啊哈,这是我的问题 - 我没有意识到使用令牌而不是凭据,谢谢 – Michal

回答

1

首先,请确保将设置访问类型的刷新令牌抓取为脱机。 然后创建一个单独的页面进行报告。 单独的页面应该为所有报告使用帐户ID和刷新令牌,并且如果它在令牌上给您一个错误,您可以自己刷新它,或者将它们发送回登录页面。

您只需申请一次凭证即可访问所有帐户。在PHP指南只使用第一个帐户,但是你可以通过所有这些迭代,并获得更多的

$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)); 
} 
+0

非常感谢你 – Michal

相关问题