我的问题很简单,我正在使用带有php脚本的Google Calendar API。
我的脚本正在运行,但我无法使用cron运行它,因为我需要一直授权我的应用。
有没有办法做我想做的事?
这是我的代码:
<?php
require_once 'google/Google_Client.php';
require_once 'google/contrib/Google_CalendarService.php';
session_start();
$client = new Google_Client();
$client->setApplicationName("Google Calendar PHP Starter Application");
$client->setClientId([MY APP ID]);
$client->setClientSecret([MY SECRET TOKEN]);
$client->setRedirectUri([MY REDIRECT URI]);
$client->setDeveloperKey([MY DEV KEY]);
$cal = new Google_CalendarService($client);
if (isset($_GET['logout'])) {
unset($_SESSION['token']);
}
/*
** Request token from API
*/
if (isset($_GET['code'])) {
$client->authenticate($_GET['code']);
$_SESSION['token'] = $client->getAccessToken();
header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}
if (isset($_SESSION['token'])) {
$client->setAccessToken($_SESSION['token']);
}
if ($client->getAccessToken()) {
// MY CODE GOES HERE
} else {
$authUrl = $client->createAuthUrl();
print "<a class='login' href='$authUrl'>Connect Me!</a>";
}
?>
谢谢!
答案 0 :(得分:0)
不知道你是否对这个问题有了答案,但我曾经遇到过同样的问题。 Google Api会返回Oauth访问令牌。此令牌会无限期地持续存在,但在您的代码中,您将其存储在$ _SESSION变量中,该变量具有将保留的时间跨度。尝试使用$token = $client->getAccessToken();
将访问令牌放入变量中,然后将令牌存储在其他形式(如数据库)中。然后在检查是否设置了$_SESSION['token']
时,如果不是,则可以查询数据库以检索令牌并使用$client->setAccessToken($queryResult);
只要您拥有该访问令牌,API就会负责其余的工作。 / p>