Google Calendar API授权始终询问

时间:2012-09-13 07:29:40

标签: authorization google-calendar-api

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


?>

谢谢!

1 个答案:

答案 0 :(得分:0)

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