检索日历列表时出现Google Calendar API错误

时间:2013-10-18 18:02:54

标签: php google-calendar-api

我尝试在Google Calendar API中做一些应用程序。我会尽一切努力根据此https://developers.google.com/google-apps/calendar/v1/developers_guide_php#RetrievingCalendars手册检索已验证用户的日历列表。我写这段代码

<?php
$clientLibraryPath = 'phpGoogle/library';
$oldPath = set_include_path(get_include_path() . PATH_SEPARATOR . $clientLibraryPath);
require_once 'Zend/Loader.php';
Zend_Loader::loadClass('Zend_Gdata');
Zend_Loader::loadClass('Zend_Gdata_AuthSub');
Zend_Loader::loadClass('Zend_Gdata_ClientLogin');
Zend_Loader::loadClass('Zend_Gdata_Calendar');
function getCurrentUrl()
{
return  "http" . (($_SERVER["HTTPS"] == "on") ? "s://" : "://") . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}
function getAuthSubUrl()
{
  $next = getCurrentUrl();
  $scope = 'https://www.google.com/calendar/feeds/';
  $secure = false;
  $session = true;
  return Zend_Gdata_AuthSub::getAuthSubTokenUri($next, $scope, $secure,
      $session);
}
$authSubUrl = getAuthSubUrl();
echo "<a href=\"$authSubUrl\">login to your Google account</a>"; 
if(! isset($_SESSION['sessionToken']) && isset($_GET['token'])) {
  $_SESSION['sessionToken'] =
      Zend_Gdata_AuthSub::getAuthSubSessionToken($_GET['token']);
}
$client = Zend_Gdata_AuthSub::getHttpClient($_SESSION['sessionToken']);
echo $_SESSION['sessionToken'];
function outputCalendarList($client)
{
  $gdataCal = new Zend_Gdata_Calendar($client);
  $calFeed = $gdataCal->getCalendarListFeed();
  echo '<h1>' . $calFeed->title->text . '</h1>';
  echo '<ul>';
  foreach ($calFeed as $calendar) {
    echo '<li>' . $calendar->title->text . '</li>';
  }
  echo '</ul>';
}
?> 

在用户身份验证之后,它给了我这个错误致命错误:未捕获的异常'Zend_Gdata_App_AuthException',消息'令牌升级失败。原因:令牌被撤销。

令牌撤销。

错误403

'/ data16 / lokys / html / testGoogle / phpGoogle / library / Zend / Gdata / AuthSub.php:138堆栈跟踪:#0 /data16/lokys/html/testGoogle/calendar.php(26):Zend_Gdata_AuthSub :: getAuthSubSessionToken('1 / G3lMsmGM7mQgt ...')#1 {main }投放在第138行的/data16/lokys/html/testGoogle/phpGoogle/library/Zend/Gdata/AuthSub.php

网络上的应用程序在http://lokys.cz/testGoogle/calendar.php,因此您可以尝试使用此问题。你能帮助我吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

请尝试添加

  

在session_start();

在顶部。

我也面临同样的问题但是在重新加载页面时发生了。我认为当会话未启动时,一次性令牌无法升级到会话令牌。

希望得到这个帮助。