Как стать автором
Обновить

Комментарии 1

Добавлю информацию по работе с календарями пользователей.

Например, example@mail.com — это email пользователя, имя основного календаря обычно совпадает с email. Просто так поставить событие пользователю в календарь не получится. Надо предоставить доступ для сервисного аккаунта. Есть 2 варианта — предоставление доступа вручную и domain-wide authority.

Когда генерируем API key, там же генерируются 2 параметра:

Client ID:
123456789012-abcdef1g2hijkl34mn56opqrstuvwxyz.apps.googleusercontent.com
Email address:
123456789012-abcdef1g2hijkl34mn56opqrstuvwxyz@developer.gserviceaccount.com

Предоставление доступа вручную:
Надо чтобы пользователь сам зашел в календарь и добавил разрешение вносить изменения для сервисного аккаунта (Email address).
Настройки — Календари — [Название календаря] — Открытие общего доступа к этому календарю — Общий доступ для отдельных пользователей
Пользователь: 123456789012-abcdef1g2hijkl34mn56opqrstuvwxyz@developer.gserviceaccount.com
Настройки разрешений: Вносить изменения

Domain-wide authority:
Если в компании используется свой домен для рабочей почты пользователей, можно настроить авторизацию по всему домену. Приложение при этом совершает действия как бы от имени пользователя (impersonate).
Это делается через консоль администратора домена: admin.google.com. Для предоставления доступа используется Client ID.
Подробно написано здесь developers.google.com/identity/protocols/OAuth2ServiceAccount в разделе Delegating domain-wide authority to the service account.

В коде надо добавить установку свойства sub (email пользователя, которым мы прикидываемся):
$credentials = new Google_Auth_AssertionCredentials(
    $service_email,  // 123456789012-abcdef1g2hijkl34mn56opqrstuvwxyz@developer.gserviceaccount.com
    $scope,          // https://www.googleapis.com/auth/calendar
    file_get_contents($p12Path)
);
$credentials->sub = $user_email;  // example@mail.com
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории