Создание событий с использованием Google Calendar API и учетной записи службы - PullRequest
0 голосов
/ 28 апреля 2020

Итак, я настроил свою служебную учетную запись с делегированием по всему домену, как описано в этом посте Выполнение делегирования полномочий G Suite для всего домена . В консоли администратора G Suite я разрешил служебной учетной записи использовать область OAuth 2.0:

https://www.googleapis.com/auth/calendar. 

Каждый раз, когда я пытаюсь создать событие, я получаю эту ошибку

GoogleJsonResponseException: 403 Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "calendar",
"message" : "Service accounts cannot invite attendees without Domain-Wide Delegation of Authority.",
"reason" : "forbiddenForServiceAccounts"
} ],
"message" : "Service accounts cannot invite attendees without Domain-Wide Delegation of Authority."
}
new GoogleCredential.Builder()
      .setTransport(HTTP_TRANSPORT)
      .setJsonFactory(JSON_FACTORY)
      .setServiceAccountId(json.get("client_id").getAsString)
      .setServiceAccountPrivateKeyId(json.get("private_key_id").getAsString)
      .setServiceAccountPrivateKey(getPrivateKeyFromPkcs8(jsonCreds.get("private_key").getAsString))
      .setServiceAccountScopes(SCOPES)
      .build()

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

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Сервисные учетные записи являются собственными пользователями. У них есть собственная учетная запись Google Calendar.

Если вы хотите предоставить учетной записи службы доступ к другому календарю, есть два способа сделать это.

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

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

Надеюсь, это поможет вам кое-что прояснить.

0 голосов
/ 03 мая 2020

Служба технической поддержки G Suite и любые учетные записи, созданные после 2 марта 2020 года, больше не смогут приглашать гостей на мероприятия без использования олицетворения.

...