1

我的问题很简单,我正在使用带有 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>";
}


?>

谢谢 !

4

1 回答 1

0

不知道你是否有这个问题的答案,但我曾经遇到过同样的问题。Google Api 返回一个 Oauth 访问令牌。此令牌无限期地持续,但在您的代码中,您将其存储在 $_SESSION 变量中,该变量具有将保留的时间跨度。尝试使用$token = $client->getAccessToken();以将访问令牌放入变量中,然后以其他形式存储令牌,例如数据库。然后在检查是否$_SESSION['token']已设置时,如果未设置,您可以查询您的数据库以检索令牌并使用$client->setAccessToken($queryResult); API 负责其余的工作,只要您拥有该访问令牌。

于 2013-02-13T19:15:19.647 回答