我最近开始使用谷歌日历。我查看了他们的文档,但目前尚不清楚。
以下代码是将事件插入用户日历。
<?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中搜索同样的问题。我没有得到任何解决方案。任何类型的帮助表示赞赏
答案 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);
}
最后,您可以注销,删除缓存,以便获得新令牌。希望它有所帮助