получить идентификатор календаря Google с адреса электронной почты - PullRequest
1 голос
/ 24 апреля 2020

Я вставляю новое событие в Календарь Google, используя служебную учетную запись service@entreprise.tn.

Я не могу указать organizer или creator для event. Мой код:

            Organizer organizer = new Organizer().setEmail("user1@entreprise.tn").setSelf(true);
            Creator creator = new Creator().setEmail("user1@entreprise.tn").setSelf(true);

            Calendar service = Calendar_Utils.getCalendarService();
            Event event = new Event()
                         .setSummary("Google Calendar API")
                         .setOrganizer(organizer)
                         .setCreator(creator);

            DateTime startDateTime = new DateTime("2020-04-24T09:00:00.000Z");
            EventDateTime start = new EventDateTime()
                                  .setDateTime(startDateTime)
                                  .setTimeZone("Africa/Tunis");
            event.setStart(start);

            DateTime endDateTime = new DateTime("2020-04-24T10:30:00.000Z");
            EventDateTime end = new EventDateTime()
                                .setDateTime(endDateTime)
                                .setTimeZone("Africa/Tunis");
            event.setEnd(end);

            String calendarId = "primary";
            event = service.events().insert(calendarId, event).execute();
            System.out.printf("Event created: %s\n", event.getHtmlLink() + " - " + event.getOrganizer() + " - " + event.getCreator());

В результате новое событие вставлено, но с организатором и создателем service@entreprise.tn, а не user1@entreprise.tn.

Не могли бы вы сказать, как я могу измените мой код, чтобы установить органайзер на user1@entreprise.tn.

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

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

В Java вы должны сделать это следующим образом:

    GoogleCredential getCredentials = new GoogleCredential.Builder()
     .setTransport(HTTP_TRANSPORT)
     .setJsonFactory(JSON_FACTORY)
     .setServiceAccountId(serviceAccount)
     .setServiceAccountPrivateKeyFromP12File(pk12)
     .setServiceAccountScopes(SCOPES)
     .setServiceAccountUser("user1@entreprise.tn") 
     .build();
0 голосов
/ 24 апреля 2020

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

Олицетворение

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...