Календарь событий Google

У меня возникли проблемы с добавлением событий в Календарь Google. Я могу перечислить события, но когда я пытаюсь добавить событие, я получаю 403 Forbidden Error. Я могу добавить события к основному, но когда я пробую другое, в данном случае то, которое я имею в виду, я сталкиваюсь с 403 Forbidden Error. Вот код, который у меня есть:

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('[email protected]');

$attendees = array($attendee1);
$event->attendees = $attendees;
$createdEvent = $service->events->insert('[email protected]', $event);

echo $createdEvent->getId();

В частности, ошибка «Ошибка вызова POST https://www.googleapis.com/calendar/v3/calendars/leah%40leahdawn.com/events: (403) Запрещено.

Любая помощь будет оценена!

0

Решение

Первый параметр События: вставить это идентификатор календаря, а '[email protected]' может быть действительным идентификатором календаря. Вы даже сможете увидеть этот календарь, если владелец поделился им с вами. Это не означает, что владелец указанного календаря дал вам разрешение на добавление событий в этот календарь.

Я предлагаю вам запустить CalendarList: получить

 $calendarListEntry = $service->calendarList->get('calendarId');
echo $calendarListEntry->getSummary();

Это вернет вам информацию об этом календаре, если у вас есть доступ.

  {

"kind": "calendar#calendarListEntry",
"etag": "\"1412244000929000\"",
"id": "[email protected]",
"summary": "[email protected]",
"timeZone": "Europe/Copenhagen",
"colorId": "15",
"backgroundColor": "#9fc6e7",
"foregroundColor": "#000000",
"selected": true,
"accessRole": "reader",
"defaultReminders": [
]
}

Здесь нужно искать "accessRole": "reader", если у вас нет доступа, чтобы делать больше, то читайте календарь, вам не разрешат добавлять события.

Обновление: CalendarList: список

попробуйте пойти к Страница списка календаря в нижней части пробуй меня. Он также покажет вам, к каким календарям у вас есть доступ.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]