我一直在努力了解OAuth 2.0离线访问如何实际运作以及如何将其实现到我的PHP脚本中。
我有多个网站,每个网站都有自己的Google帐户,我用它来获取报告的Google Analytics信息。我有一个获取信息的脚本,但是我需要登录他们特定的Google电子邮件才能运行脚本,否则我会收到一条错误消息,说我没有该帐户的权限。例如:
电子邮件1可访问网站A和网站B.
电子邮件2可访问网站C和网站D.
因此,如果我想为网站运行报告,则必须登录电子邮件2.然后,如果我需要为网站A运行报告,我将不得不注销电子邮件2并登录到电子邮件1
由于可能会有数百个网站,所有这些都在不同的电子邮件上,我不能继续这样做。我希望它工作的方式是,如果我在主电子邮件中,并且可以为我需要的多个网站运行报告。
我已对此进行了研究,发现OAuth 2.0有一个setAccessType('离线')功能,听起来它可以解决我的所有问题。但是,我无法理解它的实际工作方式以及我需要做些什么来允许从网站访问。我已经阅读了这些文件并尝试过,但我尝试的任何内容似乎都没有用。
我是否需要在数据库中存储内容?如果我该怎么做才能访问存储它的东西?
代码是什么样的?
我目前使用的关于OAuth的内容:
$client = new Google_Client();
$client->setAuthConfigFile('client_secrets/clientName/client_secrets.json');
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);
$client->setAccessType('offline');
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
$client->setAccessToken($_SESSION['access_token']);
if (isset($_GET['code'])){
$resp = $client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
$array = get_object_vars(json_decode($resp));
}
$analytics = new Google_Service_Analytics($client); // Getting interface provided by service object
$accounts = $analytics->management_accountSummaries->listManagementAccountSummaries();
我使用$ accounts获取我需要的所有信息,例如:
$results = $analytics->data_ga->get(
'ga:' . $viewId, //profile
$startDate,
$endDate,
'ga:goalCompletionsAll', // metrics
$optParams
);
我可以获得结果并将其放入报告中,但这几乎是我对Google Analytics的了解。
如何让离线工作或我做了一些根本错误的事情?