Google 日历事件
Google Calendar Events
我在向 Google 日历添加活动时遇到了一些问题。我可以列出事件,但是当我尝试添加事件时,出现 403 禁止错误。我能够将事件添加到主要事件,但是当我尝试另一个事件时,在这种情况下,我已经 mnetion,我 运行 进入 403 禁止错误。这是我的代码:
require_once 'vendor/autoload.php';
define('APPLICATION_NAME', 'Calendar');
define('CREDENTIALS_PATH', 'credentials/calendar.json');
define('SECRET_PATH', 'secret.json');
define('SCOPES', implode(' ', array(Google_Service_Calendar::CALENDAR)));
function getClient() {
$client = new Google_Client();
$client->setApplicationName(APPLICATION_NAME);
$client->setScopes(SCOPES);
$client->setAuthConfigFile(SECRET_PATH);
$client->setAccessType('offline');
$credentials_path = CREDENTIALS_PATH;
if (file_exists($credentials_path)) {
$access_token = file_get_contents($credentials_path);
} else {
// $auth_url = $client->createAuthUrl();
// printf("Open the following link in your browser:\n%s\n", $auth_url);
// print 'Enter verification code: ';
// $auth_code = trim(fgets(STDIN));
// $access_token = $client->authenticate($auth_code);
// if (!file_exists(dirname($credentials_path))) {
// mkdir(dirname($credentials_path), 0700, true);
// }
// file_put_contents($credentials_path, $access_token);
// printf("Credentials saved to %s\n", $credentials_path);
}
$client->setAccessToken($access_token);
if ($client->isAccessTokenExpired()) {
$client->refreshToken($client->getRefreshToken());
file_put_contents($credentials_path, $client->getAccessToken());
}
return $client;
}
$client = getClient();
$service = new Google_Service_Calendar($client);
$event = new Google_Service_Calendar_Event();
$event->setSummary('Appointment');
$event->setLocation('Somewhere');
$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime('2015-04-14T10:00:00.000-07:00');
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime('2015-04-15T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new Google_Service_Calendar_EventAttendee();
$attendee1->setEmail('leah@leahdawn.com');
$attendees = array($attendee1);
$event->attendees = $attendees;
$createdEvent = $service->events->insert('leah@leahdawn.com', $event);
echo $createdEvent->getId();
具体来说,错误是“调用 POST https://www.googleapis.com/calendar/v3/calendars/leah%40leahdawn.com/events 时出错:(403) 禁止访问。
如有任何帮助,我们将不胜感激!
Events: insert 的第一个参数是一个日历 ID,而 'leah@leahdawn.com'
可以是一个有效的日历 ID。如果所有者与您共享了此日历,您甚至可以看到它。这并不意味着所述日历的所有者已授予您向该日历添加事件的权限。
我建议你运行一个CalendarList: get
$calendarListEntry = $service->calendarList->get('calendarId');
echo $calendarListEntry->getSummary();
如果您有权访问,这将返回有关此日历的信息。
{
"kind": "calendar#calendarListEntry",
"etag": "\"1412244000929000\"",
"id": "xxxxx@gmail.com",
"summary": "xxxxx@gmail.com",
"timeZone": "Europe/Copenhagen",
"colorId": "15",
"backgroundColor": "#9fc6e7",
"foregroundColor": "#000000",
"selected": true,
"accessRole": "reader",
"defaultReminders": [
]
}
这里要注意的是 "accessRole": "reader",
如果您无权执行更多操作,请阅读日历,您将无法添加活动。
更新:日历列表:列表
尝试转到底部的 Calendar list page 运行 试试我。它还将向您显示您有权访问的日历。
我在向 Google 日历添加活动时遇到了一些问题。我可以列出事件,但是当我尝试添加事件时,出现 403 禁止错误。我能够将事件添加到主要事件,但是当我尝试另一个事件时,在这种情况下,我已经 mnetion,我 运行 进入 403 禁止错误。这是我的代码:
require_once 'vendor/autoload.php';
define('APPLICATION_NAME', 'Calendar');
define('CREDENTIALS_PATH', 'credentials/calendar.json');
define('SECRET_PATH', 'secret.json');
define('SCOPES', implode(' ', array(Google_Service_Calendar::CALENDAR)));
function getClient() {
$client = new Google_Client();
$client->setApplicationName(APPLICATION_NAME);
$client->setScopes(SCOPES);
$client->setAuthConfigFile(SECRET_PATH);
$client->setAccessType('offline');
$credentials_path = CREDENTIALS_PATH;
if (file_exists($credentials_path)) {
$access_token = file_get_contents($credentials_path);
} else {
// $auth_url = $client->createAuthUrl();
// printf("Open the following link in your browser:\n%s\n", $auth_url);
// print 'Enter verification code: ';
// $auth_code = trim(fgets(STDIN));
// $access_token = $client->authenticate($auth_code);
// if (!file_exists(dirname($credentials_path))) {
// mkdir(dirname($credentials_path), 0700, true);
// }
// file_put_contents($credentials_path, $access_token);
// printf("Credentials saved to %s\n", $credentials_path);
}
$client->setAccessToken($access_token);
if ($client->isAccessTokenExpired()) {
$client->refreshToken($client->getRefreshToken());
file_put_contents($credentials_path, $client->getAccessToken());
}
return $client;
}
$client = getClient();
$service = new Google_Service_Calendar($client);
$event = new Google_Service_Calendar_Event();
$event->setSummary('Appointment');
$event->setLocation('Somewhere');
$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime('2015-04-14T10:00:00.000-07:00');
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime('2015-04-15T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new Google_Service_Calendar_EventAttendee();
$attendee1->setEmail('leah@leahdawn.com');
$attendees = array($attendee1);
$event->attendees = $attendees;
$createdEvent = $service->events->insert('leah@leahdawn.com', $event);
echo $createdEvent->getId();
具体来说,错误是“调用 POST https://www.googleapis.com/calendar/v3/calendars/leah%40leahdawn.com/events 时出错:(403) 禁止访问。
如有任何帮助,我们将不胜感激!
Events: insert 的第一个参数是一个日历 ID,而 'leah@leahdawn.com'
可以是一个有效的日历 ID。如果所有者与您共享了此日历,您甚至可以看到它。这并不意味着所述日历的所有者已授予您向该日历添加事件的权限。
我建议你运行一个CalendarList: get
$calendarListEntry = $service->calendarList->get('calendarId');
echo $calendarListEntry->getSummary();
如果您有权访问,这将返回有关此日历的信息。
{
"kind": "calendar#calendarListEntry",
"etag": "\"1412244000929000\"",
"id": "xxxxx@gmail.com",
"summary": "xxxxx@gmail.com",
"timeZone": "Europe/Copenhagen",
"colorId": "15",
"backgroundColor": "#9fc6e7",
"foregroundColor": "#000000",
"selected": true,
"accessRole": "reader",
"defaultReminders": [
]
}
这里要注意的是 "accessRole": "reader",
如果您无权执行更多操作,请阅读日历,您将无法添加活动。
更新:日历列表:列表
尝试转到底部的 Calendar list page 运行 试试我。它还将向您显示您有权访问的日历。