Изменить события календаря Google из учетной записи службы Google: 403

Я хочу создать новое событие в календаре Google из учетной записи службы. Я могу получить доступ правильно и распечатать список всех моих календарей. Но когда я хочу создать новое событие, я получаю ответ 403 Запрещено.

Мой код:

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

Есть идеи? Может быть, другой объем или разрешить редактировать события (я не знаю, где я могу настроить это, и я искал это, обещаю)

Конечно, мой календарь является публичным календарем.

Любая помощь будет приветствоваться:)

Спасибо!

1 ответ

Решение

Я решил, и проблема была не в коде, он отлично работает.

Проблема была в том, чтобы поделиться своим календарем. То, чего я не знал.

Чтобы разрешить редактирование событий календаря из учетной записи службы, вам не хватит всех шагов, которые вы выполняете в консоли Google Api, вам нужно дать разрешение в конфигурации календаря (Настройка календаря -> Поделиться этим календарем) для учетной записи электронной почты, указанной в Google. Консоль Api (адрес электронной почты).

Это может быть проблемой, если это бизнес-аккаунт, тогда вам придется связаться с администратором аккаунта.

Код, показанный здесь, работает правильно, поэтому я надеюсь, что он кому-нибудь поможет, просто помните, что вы должны использовать 475 версию клиента Google Api.

Вы можете найти по этой ссылке: http://google-api-php-client.googlecode.com/svn/trunk/src/

Другие вопросы по тегам