首先,请确保将设置访问类型的刷新令牌抓取为脱机。 然后创建一个单独的页面进行报告。 单独的页面应该为所有报告使用帐户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));
}
记住凭据不是用户的登录名和密码。这是一个刷新令牌,可让您在将来访问其帐户。在这种情况下,服务帐户不适用于您。这将是一个坏主意。我有一个教程系列,可能会帮助你开始。 http://www.daimto.com/google-development-beginners/ Dimi发布的答案中的代码应该可以工作。 – DaImTo
啊哈,这是我的问题 - 我没有意识到使用令牌而不是凭据,谢谢 – Michal