Я хочу создать новое событие в календаре Google из учетной записи службы. Я могу получить доступ правильно и распечатать список всех моих календарей. Но когда я хочу создать новое событие, ответ будет равен 403 Forbidden.
Мой код:
require_once 'src/Google_Client.php'; require_once 'src/contrib/Google_CalendarService.php'; session_start(); const CLIENT_ID = 'XXXXXXXXXX.apps.googleusercontent.com'; const SERVICE_ACCOUNT_NAME = 'XXXXXXXXXXXX@developer.gserviceaccount.com'; const KEY_FILE = 'google_src/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-privatekey.p12'; $client = new Google_Client(); $client->setApplicationName("APP_NAME"); if (isset($_SESSION['token'])) { $client->setAccessToken($_SESSION['token']); } $key = file_get_contents(KEY_FILE); $client->setClientId(CLIENT_ID); $client->setAssertionCredentials(new Google_AssertionCredentials( SERVICE_ACCOUNT_NAME, 'https://www.google.com/calendar/feeds/MY_CALENDAR_ID/private/full/', $key) ); $client->setClientId(CLIENT_ID); $cal = new Google_CalendarService($client); $event = new Google_Event(); $event->setSummary('Bon dia pel matí!'); $event->setLocation('Somewhere'); $start = new Google_EventDateTime(); $start->setDateTime('2012-08-06T10:00:00.000-07:00'); $event->setStart($start); $end = new Google_EventDateTime(); $end->setDateTime('2012-09-06T10:25:00.000-07:00'); $event->setEnd($end); $createdEvent = $cal->events->insert(CALENDAR_NAME, $event);
И ответ сервера:
(403) Forbidden
Есть идеи? Возможно, другая область или разрешить редактирование событий (я не знаю, где я могу настроить это, и я искал его, обещаю)
Конечно, мой календарь – это общедоступный календарь.
Любая помощь будет приветствоваться 🙂
Благодаря!
Я решил это, и проблема была не в коде, он отлично работает.
Проблема заключалась в совместном использовании моего календаря. Что-то, чего я не знал.
Чтобы разрешить редактировать ваши события календаря из учетной записи службы, не хватает всех шагов, которые вы выполняете в Google Api Console, вам необходимо предоставить разрешение из вашей конфигурации календаря (Конфигурация календаря -> Поделиться этим календарем) на учетную запись электронной почты, указанную в Google Api Console (адрес электронной почты).
Это может быть проблемой, если это бизнес-аккаунт, тогда вам придется обратиться к администратору учетной записи.
Код, показанный здесь, работает правильно, поэтому я надеюсь, что это поможет кому-то, просто помните, что вы должны использовать версию клиента Api версии 475.
Вы можете найти по этой ссылке: http://google-api-php-client.googlecode.com/svn/trunk/src/