试图在谷歌日历中创建活动

时间:2014-08-13 19:33:32

标签: php google-calendar-api google-oauth

我最近开始使用谷歌日历。我查看了他们的文档,但目前尚不清楚。

以下代码是将事件插入用户日历。

<?php
require_once dirname(__FILE__).'/Google/Client.php';
require_once dirname(__FILE__).'/Google/Service/Analytics.php';
require_once dirname(__FILE__).'/Google/Service/Calendar.php';

$scriptUri = "http://".$_SERVER["HTTP_HOST"].$_SERVER['PHP_SELF'];

$client = new Google_Client();
$client->setAccessType('online'); 
$client->setApplicationName('MYAPP');
$client->setClientId('XXXXXXXXXXXX');
$client->setClientSecret('XXXXXXXXXXXX');
$client->setRedirectUri($scriptUri);
$client->setDeveloperKey('XXXXXXXXXXXXXXXXX'); // API key

$scopes = array('https://www.googleapis.com/auth/calendar');
$client->setScopes($scopes);
$cal = new \Google_Service_Calendar($client);

if (isset($_GET['logout'])) { // logout: destroy token
    unset($_SESSION['token']);
    die('Logged out.');
}

if (isset($_GET['code'])) { 
   $client->authenticate($_GET['code']);
   $_SESSION['token'] = $client->getAccessToken();
}

if (isset($_SESSION['token'])) { // extract token from session and configure client
   $token = $_SESSION['token'];
   $client->setAccessToken($token);
}

if (!$client->getAccessToken()) { // auth call to google

$authUrl = $client->createAuthUrl();

header("Location: ".$authUrl);
die;
}


$event = new Google_Event();
$event->setSummary('Halloween');
$event->setLocation('The Neighbourhood');
$start = new Google_EventDateTime();
$start->setDateTime('2012-10-31T10:00:00.000-05:00');
$event->setStart($start);
$end = new Google_EventDateTime();
$end->setDateTime('2012-10-31T10:25:00.000-05:00');
$event->setEnd($end);

$createdEvent = $cal->events->insert("xxxxxx@gmail.com", $event); //Returns array not an object

echo $createdEvent->id;

但是我得到致命的错误,如

   Class 'Google_Event' not found 

请帮助解决此问题。我在Stack overflow中搜索同样的问题。我没有得到任何解决方案。任何类型的帮助表示赞赏

2 个答案:

答案 0 :(得分:0)

我刚刚为自己找到了解决方案。

事实证明他们又改变了所有的名字。

通过Google_Service_Calendar _

替换Google

例如:
$ event = new Google_Service_Calendar_Event();

现在变成:

        $event = new Google_Service_Calendar_Event();

它会起作用!

答案 1 :(得分:0)

我没有工作代码,因为我选择了服务帐户方法。

也许您可以尝试删除

 "  $client->setDeveloperKey('XXXXXXXXXXXXXXXXX'); " which often gives error. 

您还可以修改config.php文件并选择离线模式。 (见文件)。

最后,您可以使用以下代码刷新令牌:      if($ client-&gt; isAccessTokenExpired()){

 $client->authenticate();
 $NewAccessToken = json_decode($client->getAccessToken());
 $client->refreshToken($NewAccessToken->refresh_token);

 }

最后,您可以注销,删除缓存,以便获得新令牌。希望它有所帮助